阅读(2286) (0)

Unity 3D 触发器(Trigger)

2020-07-15 09:20:24 更新

在 Unity 3D 中,检测碰撞发生的方式有两种:

  • 利用碰撞体(Collider)。

  • 利用触发器(Trigger)。

在很多游戏引擎或工具中都有触发器,它被用来触发事件。

例如,在游戏中的剧情里,玩家通过某个任务道具召唤了任务相关的 NPC 或者可击杀的怪物,就可以用触发器来实现。

当绑定了碰撞体的游戏对象进入触发器区域时,会运行触发器对象上的 OnTriggerEnter 函数,同时需要在检视面板中的碰撞体组件中勾选 IsTrigger 复选框

触发信息检测使用以下 3 个函数:

  • MonoBehaviour.OnTriggerEnter(Collider collider),当进入触发器时触发。

  • MonoBehaviour.OnTriggerExit(Collider collider),当退出触发器时触发。

  • MonoBehaviour.OnTriggerStay(Collider collider),当逗留在触发器中时触发。

Unity 3D 中的碰撞体和触发器的区别在于:

  • 碰撞体是触发器的载体。

  • 触发器只是碰撞体的一个属性。

如果既想要检测到物体的接触,又不想让碰撞检测影响物体移动,或者要检测一个物体是否经过空间中的某个区域,这时就可以用到触发器。

例如,碰撞体适合模拟汽车被撞飞、皮球掉在地上又弹起的效果,而触发器适合模拟人站在靠近门的位置时门自动打开的效果。