MargaretChen
一个物体添加多个碰撞器

一个物体添加多个碰撞器

前言

参考链接

我需要在角色上增加一个sphere collider检测item碰撞,另一个collider用于进行物理碰撞

若在一个物体上添加两个collider,使用OnTriggerEnter时,两个collider都会触发该函数

解决办法:

添加子物体碰撞器

Character下新增空物体 并挂载Collider组件

a01.png

a01.png

子物体上添加脚本

声明两个事件:进入触发和离开触发

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)
{
//游戏逻辑
}
Author:MargaretChen
Link:http://margaret-chen217.github.io/2023/07/14/一个物体添加多个碰撞器/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可