关于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即可。

原文地址:https://www.cnblogs.com/mrmocha/p/8067211.html