Trigger(触发器)和Collider(碰撞器)的区别

时间:2021-04-11 05:03:50

参考资料:

http://www.ceeger.com/Components/class-BoxCollider.html

要产生碰撞的条件:


       ①.游戏对象必须要有碰撞体,其中一个要必须带有刚体,碰撞的物体要有相对运动;
            在物理模拟中,没有碰撞体的刚体会彼此相互穿过。
 
触发器事件执行的条件:
 
      ①.两个物体上都要带有碰撞器;
      ②.至少带有一个刚体,并且两个物体至少有一个把触发器打开;
 
检测碰撞发生的两种方式: ①.碰撞器    ②.触发器
 
碰撞器: 包含了很多个组件,比如:Box Collier(盒碰撞体),Mesh Coliider(网格碰撞体)
  这些组件都必须在GameObject上运行;
 
触发器: 它只是碰撞器上的一个属性;
 
触发信息检测:
1.MonoBehaviour.OnTriggerEnter(Collider collider)当进入触发器
2.MonoBehaviour.OnTriggerExit(Collider collider)当退出触发器
3.MonoBehaviour.OnTriggerStay(Collider collider)当逗留触发器
 
碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter(Collision collision) 当进入碰撞器
2.MonoBehaviour.OnCollisionExit(Collision collision) 当退出碰撞器
3.MonoBehaviour.OnCollisionStay(Collision collision)  当逗留碰撞器
 
Colliosion 碰撞信息    Collier 碰撞体;
当两个物体相接触时到底执行OnTriggerEnter还是执行OnCOllisionEnter:
 
当我们在检视窗口未勾选碰撞器的Is Trigger选项时,进入OnSllisionEnter,物体被撞飞;
 
如果将碰撞器Is Trigger属性选中,再次接触,进入OnTriggerEnter,之后会相互穿过,没有发生碰撞;
 
unity3d中的碰撞器和触发器的区别:
 
碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性
当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;
当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。
 
用处:
如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器
 
例子:
碰撞器:汽车被撞飞、皮球掉在地上又弹起效果
触发器:人站在靠近门的位置门自动打开效果