Unity 物体触碰事件监听

声明委托

public delegate void MyDelegate(Collider trigger);

C# 委托(Delegate) | 菜鸟教程 (runoob.com)https://www.runoob.com/csharp/csharp-delegate.html

定义委托

public MyDelegate onTriggerEnter;
public MyDelegate onTriggerStay;
public MyDelegate onTriggerExit;

动态挂载

public static Listener Get(GameObject go)
{
    Listener listener = go.GetComponent<Listener>();
    if (listener == null) 
        listener = go.AddComponent<Listener>();
    return listener;
}

监听

private void OnTriggerEnter(Collider trigger)
{
    onTriggerEnter?.Invoke(trigger);
}
private void OnTriggerStay(Collider trigger)
{
    onTriggerStay?.Invoke(trigger);
}
private void OnTriggerExit(Collider trigger)
{
    onTriggerExit?.Invoke(trigger);
}

示例

GameObject colliderObj;

Listener.Get(colliderObj).onTriggerEnter += OnEnter;
Listener.Get(colliderObj).onTriggerStay += OnStay;
Listener.Get(colliderObj).onTriggerExit += OnExit;

void OnEnter(Collider trigger)
{
    Debug.Log("物体" + trigger.name + "进入");
}
void OnStay(Collider trigger)
{
    Debug.Log("物体" + trigger.name + "停留");
}
void OnExit(Collider trigger)
{
    Debug.Log("物体" + trigger.name + "退出");
}

Unity 碰撞器(Collider)与触发器(Trigger)_unity colider 触发器碰撞触发器-CSDN博客文章浏览阅读1.1w次,点赞7次,收藏26次。要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动。碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。物体发生碰撞的必要条件:  两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbod_unity colider 触发器碰撞触发器https://blog.csdn.net/sky1466181491/article/details/76684776

相关推荐
土了个豆子的4 小时前
unity中的动画混合树
unity·游戏引擎
奔跑的犀牛先生7 小时前
unity学习26:用Input接口去监测: 鼠标,键盘,虚拟轴,虚拟按键
unity
Dr.勿忘17 小时前
C#面试常考随笔8:using关键字有哪些用法?
开发语言·unity·面试·c#·游戏引擎
存储服务专家StorageExpert18 小时前
答疑解惑:如何监控EMC unity存储系统磁盘重构rebuild进度
运维·unity·存储维护·emc存储
追逐梦想永不停1 天前
Unity实现按键设置功能代码
unity
我命由我123452 天前
游戏引擎 Unity - Unity 下载与安装
c语言·开发语言·c++·后端·unity·c#·游戏引擎
车载诊断技术2 天前
车载软件架构 --- 基于AUTOSAR软件架构的ECU开发流程小白篇
网络·unity·架构·汽车·电子电器框架·车载充电器(obc)
我命由我123452 天前
游戏引擎 Unity - Unity 启动(下载 Unity Editor、生成 Unity Personal Edition 许可证)
c语言·c++·后端·unity·c#·游戏引擎·ue4
我命由我123452 天前
游戏开发领域 - 游戏引擎 UE 与 Unity
开发语言·c++·unity·c#·游戏引擎·unreal engine·unreal engine 4
一个一定要撑住的学习者2 天前
Day29(补)-【AI思考】-精准突围策略——从“时间贫困“到“效率自由“的逆袭方案
人工智能·unity·游戏引擎