关于Unity的一些碰撞检测方法
1.碰撞检测条件:
A.双方均有碰撞器
B.运动方必须有刚体
2.碰撞检测类型:
A.触发器情况(无碰撞物理效果)(碰撞体上IS Trigger打勾)
1 //触发器(无物理效果)碰撞瞬间检测 2 void OnTriggerEnter(Collider other) 3 { 4 Debug.Log(other.name); 5 } 6 //触发器(无物理效果)持续碰撞检测 7 void OnTriggerStay(Collider other) 8 { 9 Debug.Log(other.name); 10 } 11 //触发器(无物理效果)离开碰撞检测 12 void OnTriggerExit(Collider other) 13 { 14 Debug.Log(other.name); 15 }
B.带物理效果碰撞情况
1 //带有物理效果的碰撞瞬间检测 2 void OnCollisionEnter(Collision other) 3 { 4 print(other.transform .name); 5 } 6 //带有物理效果的持续碰撞检测 7 void OnCollisionStay(Collision other) 8 { 9 print(other.transform.name); 10 } 11 //带有物理效果的离开碰撞检测 12 void OnCollisionExit(Collision other) 13 { 14 print(other.transform.name); 15 }
3.碰撞检测常用方法:
A.通过碰撞到的标签进行辨别
B.通过设置物理碰撞矩阵来限定指定层之间才可以进行碰撞检测
4.设置指定层间碰撞检测步骤如下图:
在Editor/Project Setting/Physics 下打开碰撞矩阵面板,将我们事先添加好的“aaa”,“bbb”,“ccc”层级之间的检测关系进行自定义打勾,在这里设定仅允许“aaa”与“ccc”层级之间的物体进行碰撞检测
根据项目需求自定义层级并设置就好(好处:可以减少碰撞检测判断标签代码执行与内存消耗)
同理,2D的检测只需将3D化为2D即可。
但行好事,莫问前程!