关于碰撞检测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);
    }
}