目录

参考

触发事件

触发器与碰撞体

碰撞体检测

碰撞检测的3种方法

碰撞检测实现的条件

触发器与碰撞体的关系

触发检测

碰撞体的Is Trigger选项

触发检测的3种方法

触发检测实现的条件

触发器应用情景


参考

 Triggers 模块 - Unity 手册

碰撞器检测和触发器检测 - 简书 (jianshu.com)

在添加碰撞体组件时会有选择“是否是触发器”——Is Trigger的选项,勾选这个复选框后,刚体移动的时候就会穿过碰撞体。

unity触发器的区别 unity触发器怎么用_碰撞检测

在了解触发器之前,可以了解一下什么是触发事件。

触发事件

  • 触发事件——当绑定了碰撞体的游戏对象进入到另一个游戏对象的触发范围内
  • 触发事件发生时,不会发生直接的碰撞,而是——只要进入了触发器区域就会执行某些操作

触发器与碰撞体

碰撞体检测

Unity中碰撞体Coliider是一类组件,有很多种类。

碰撞检测的3种方法

  • 两个游戏对象的碰撞器刚接触时(注意这里不是游戏对象接触,而是游戏对象的碰撞器Collider组件接触),调用一次OnCollisionEnter()函数
  • 只要两个碰撞体一直在接触,就会一直调用OnCollisionStay()函数
  • 两个碰撞体相互分离时,调用一次OnCollisionExit()函数

碰撞检测实现的条件

两个游戏对象A和B实现碰撞检测

  • 运动的对象一定要是刚体,A和B至少有一个是刚体
  • A和B必须都是碰撞体(Is Trigger必须都关闭,不能是触发器)
  • A和B可以互相检测碰撞(都挂一个碰撞检测的script)

触发器与碰撞体的关系

  • 在Unity中,检测碰撞发生的方式有两种:利用触发器检测&利用碰撞体检测
  • 碰撞体可以看成是触发器的载体,触发器只是碰撞体的一个属性

触发检测

碰撞体的Is Trigger选项

勾选后,碰撞体就成了一个触发器,此时碰撞体的边界就成了触发器的区域。

unity触发器的区别 unity触发器怎么用_游戏引擎_02

当触发事件发生后,刚体不会与碰撞体物体发生直接的碰撞,而是直接穿透碰撞体。

触发检测的3种方法

  • 如果碰撞体组件勾选了Is Trigger的选项,当触发事件发生时会调用OnTriggerEnter(Collier)函数
  • 当仍在触发器范围内时,会调用OnTriggerStay(Collier)函数
  • 当离开触发范围内时,会调用触发器的OnTriggerExit(Collier)函数

触发检测实现的条件

当A和B两个对象实现触发检测

  • 运动的那个对象必须是刚体
  • A和B只要有一个是触发器,就可以实现触发检测
  • A和B可以互相实现触发检测(都挂一个触发检测的script)

触发器应用情景

当我们想要检测到物体之间的接触,又不想让碰撞检测影响物体的移动,这时候就可以用到触发器,比如下列情况就适合用触发器实现

  • 检测物体是否经过地图上的某个区域
  • 人靠近门的位置门自动打开