一个物体添加多个碰撞器
前言
参考链接
我需要在角色上增加一个sphere collider检测item碰撞,另一个collider用于进行物理碰撞
若在一个物体上添加两个collider,使用OnTriggerEnter时,两个collider都会触发该函数
解决办法:
添加子物体碰撞器
Character下新增空物体 并挂载Collider组件
子物体上添加脚本
声明两个事件:进入触发和离开触发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class TriggerDetection : MonoBehaviour { public Action<Collider> OnCollisionEnter_Action; public Action<Collider> OnCollisionExit_Action;
private void OnTriggerEnter(Collider other) { OnCollisionEnter_Action ?. Invoke(other); } private void OnTriggerExit(Collider other) { OnCollisionExit_Action ?. Invoke(other); } }
|
父物体订阅该事件
父物体Player脚本中订阅两个碰撞事件
1 2 3 4 5 6 7 8
| private TriggerDetection detectTrigger;
private void Start() { detectTrigger = transform.Find("DetectCollider").GetComponent<TriggerDetection>(); detectTrigger.OnCollisionEnter_Action += detectTrigger_OnCollisionEnter; detectTrigger.OnCollisionExit_Action += detectTrigger_OnCollisionExit; }
|
在函数中完善游戏逻辑
1 2 3 4 5 6 7 8 9
| private void detectTrigger_OnCollisionExit(Collider other) { }
private void detectTrigger_OnCollisionEnter(Collider other) { }
|