关于碰撞检测Unity提供了OnCollider的方法
第一,准备工作
现在布置一个简简单单的场景作为demo测试,我的场景里面有拳法带师马保国同志,以及两个方块跑龙套
之后我们在马保国身上挂靠一个名叫ColliderTest脚本,注意在Unity的规则中,脚本名与类名一定要一样而C#是不用的,
一定要切记脚本名称要和类名一样,不然Unity会自动报错!
一定要切记脚本名称要和类名一样,不然Unity会自动报错!
一定要切记脚本名称要和类名一样,不然Unity会自动报错!
准备工作完成以后,我们给ColliderTest写上要用的变量
moveSpeed是场景中马保国移动的速度
rbd是物体所要获取的刚体组件
void Start()
{
rbd = GetComponent<Rigidbody>();
}
然后在Start方法里面调用物体自身所携带的刚体组件,乍一看好像所有步骤都做完了,接下来我们要给马保国同志动起来
void Update()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 moveVel = new Vector3(h, 0, v)*moveSpeed;
rbd.velocity = moveVel;
}
我们在Update方法里面定义两个float值分别为物体的水平移动和垂直移动,水平移动就是我们平常说的左右移动,垂直移动就是我们平常所说的上下移动,定义完了以后,我们在定义一个三维坐标变量吧float h赋值给x,吧float v赋值给z再乘以我们之前定义的moveSpeed值,通过刚体velcity给物体添加一个加速度,这样我们的马保国就动起来了!
动起来了以后我们就给他添加碰撞体检测,碰撞体检测是unity自带的一个方法叫做OnCollider
OnColliderEnter一定要写对不能写错,写错了以后代码虽然不报错,但是系统没办法识别出来
然后我们通过用tag标签来获得我们想要的gameObject然后再碰到gameObject以后通过Destroy(col.gameObject)来消除他
写完了以后,我们返回到Inspector面板上点击tag然后再选择add Tag..建立cube的标签
之后再检查马保国自身的Collider和Rigidbody有没有添加,如果没有添加要添加了才可以使用
检查完以后我们的碰撞检测就已经完成了,效果如下
完整代码如下:
public float moveSpeed;
private Rigidbody rbd;
// Start is called before the first frame update
void Start()
{
rbd = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 moveVel = new Vector3(h, 0, v)*moveSpeed;
rbd.velocity = moveVel;
}
private void OnCollisionEnter(Collision col)
{
if (col.gameObject.tag == "cube1")
{
Destroy(col.gameObject);
}
}
用Tigger也行哟
private void OnTriggerEnter(Collider col)
{
if (col.gameObject.tag == "cube1")
{
Destroy(col.gameObject);
}
}