menu yeungclue
[Unity]基础!碰撞检测!
406 浏览 | 2021-05-12 | 阅读时间: 约 2 分钟 | 分类: 默认分类,Unity学习 | 标签:
请注意,本文编写于 127 天前,最后修改于 125 天前,其中某些信息可能已经过时。

关于碰撞检测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);
    }
}
知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

发表评论

email
web

全部评论 (共 6 条评论)

    中班同学
    2021-05-13 00:33
    加油!!!支持大佬
    陈旧哥
    2021-05-12 23:05
    牛逼!!!!
    我是xxxx他Dad
    2021-05-12 22:05
    牛逼啊 我的儿!
    我是***他Dad
    2021-05-12 20:39
    牛逼啊 我的儿!
    木木木木木木
    2021-05-12 20:33
    这里就是带佬的世界吗!
    大能哥
    2021-05-12 20:19
    爱你,大佬!