Unity 碰撞体和刚体的区别(应用)

很多初学者都会问这么一个问题,那就是碰撞体和刚体到底有什么区别,以及如何应用


两句话概括碰撞体:
碰撞体才能被射线检测到,否则无法被检测
碰撞体是产生碰撞的前提


两句话概括刚体:
需要模拟重力的自由下落时,添加刚体
物体间发生碰撞时,主动体身上必须添加刚体


不管是哪一种Collider,都有 IsTrigger属性,注意,在发生碰撞的两个物体中,不管是一个物体勾选IsTrigger属性,还是两个物体同时勾选这个属性,效果都是一样,勾选上,碰撞时会互不影响的相互穿插过去,如不勾选,在碰撞时,碰撞体之间谁也不让谁,相互僵持


落实到实际开发中就分如下两种情况:


主动体(碰撞体+刚体) +被动体(碰撞体)+勾选IsTrigger属性+OnTriggerEnter

因为勾选IsTigger属性,所以发生碰撞时,碰撞体之间可以互不影响的相互穿插过去,但是碰撞那一刻,OnTiggerEnter函数会被触发,Collider参数代表的是没有挂脚本的那个对象


主动体(碰撞体+刚体)+被动体(碰撞体)+OnCollisionEnter

因为没有勾选IsTigger属性,所以发生碰撞时,碰撞体之间不能够相互穿插,碰撞的那一瞬间,OnCollisionEnter函数会被触发,Collision参数代表的是没有挂脚本的那个对象


下面就做一个简单的demo


在场景中建两个对象,一个正方体,一个球体 ,两个对象都是碰撞体
然后在正方体上添加一个刚体,并且把刚体的重力去掉


Unity 碰撞体和刚体的区别(应用)_第1张图片


Unity 碰撞体和刚体的区别(应用)_第2张图片


Unity 碰撞体和刚体的区别(应用)_第3张图片


此时运行场景,在Scene窗口中,拖动正方体,主动碰撞球体,结果如下:
Unity 碰撞体和刚体的区别(应用)_第4张图片


我只测试上面这一种情况,你也可以继续做如下测试:
测试一:将上面的主动体中的刚体去掉,添加到被动体上,看看结果
测试二:将上面脚本中OnCollisionEnter换成OnTriggerEnter,看看结果
测试三:将上面脚本中碰撞体属性IsTrigger勾选任意一个,看看结果
测试四: 测试二+测试三 结合起来,看看结果


FR:徐海涛(Hunk Xu) QQ技术群:386476712

你可能感兴趣的:(Unity)