写在前面的话
用unity做开发碰撞的检测是经常要用到的,但是有时候会发现碰撞不起作用,小弟颇为疑惑。于是做了个小小的实验来探讨一下。
Unity为4.6.3
Rigidbody组件
常用的
1.Mass 指定GameObject质量
2.Drag 指定阻力(一般为空气阻力)
3.Angular Drag 旋转阻力
4.Use Gravity 是否启用重力,勾选则启用
5.Is Kinematic 是否禁用物理效果,勾选则禁用
6.Freeze Position 禁用移动(禁用轴打勾)
7.Freeze Rotation 禁用旋转(禁用轴打勾)
OnTriggerEnter
结论:
两个物体A,B(AB都已经挂好Collider),用A去撞击B,OnTriggerEnter脚本挂在A上。A、B其中一个勾选Collider组件下的Is Trigger就可以,但是A(调用OnTriggerEnter的物体)必须有Rigidbody。
下面是一个小测试例子
物体A(挂脚本)
物体B
测试结果:
只列出主要情况:
物体 | 是否Rigidbody | 是否Is Trigger | 是否检测到碰撞 |
---|---|---|---|
A(挂脚本) | √ | √ | 是 |
B | × | × | |
A(挂脚本) | × | × | 否 |
B | √ | √ | |
A(挂脚本) | √ | × | 是 |
B | × | √ | |
A(挂脚本) | × | √ | 否 |
B | √ | × |
结论在上面