Unity 物体触碰事件监听

声明委托

public delegate void MyDelegate(Collider trigger);

C# 委托(Delegate) | 菜鸟教程 (runoob.com)icon-default.png?t=N7T8https://www.runoob.com/csharp/csharp-delegate.html

定义委托

public MyDelegate onTriggerEnter;
public MyDelegateonTriggerStay;
public MyDelegateonTriggerExit;

动态挂载

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

相关推荐

  1. unity防止ui点击事件被子物体拦截

    2024-04-29 06:26:02       43 阅读
  2. 最新Unity DOTS Physics物理引擎碰撞事件处理

    2024-04-29 06:26:02       65 阅读
  3. DOTS Unity.Physics物理引擎碰撞事件处理

    2024-04-29 06:26:02       35 阅读
  4. Qt中的事件

    2024-04-29 06:26:02       39 阅读
  5. vue 实现 下拉事件

    2024-04-29 06:26:02       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-29 06:26:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-29 06:26:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-29 06:26:02       87 阅读
  4. Python语言-面向对象

    2024-04-29 06:26:02       96 阅读

热门阅读

  1. GO语言核心30讲 进阶技术

    2024-04-29 06:26:02       34 阅读
  2. C、C++的联合体:union关键字含义

    2024-04-29 06:26:02       27 阅读
  3. python:map()函数用法

    2024-04-29 06:26:02       30 阅读
  4. docker pull失败:x509: certificate has expired or is not yet

    2024-04-29 06:26:02       30 阅读
  5. electron 数据持久化方案

    2024-04-29 06:26:02       30 阅读
  6. 搜索引擎的发展历史

    2024-04-29 06:26:02       27 阅读
  7. ElasticSearch

    2024-04-29 06:26:02       32 阅读
  8. React的基础概念

    2024-04-29 06:26:02       32 阅读
  9. mysql数据库提权

    2024-04-29 06:26:02       26 阅读
  10. 3D头模加载

    2024-04-29 06:26:02       25 阅读