关于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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值