Unity学习笔记(一):碰撞体(Collider),触发器(Trigger),刚体(RigidBody)

来源:互联网 发布:英国知山大学 编辑:程序博客网 时间:2024/04/30 04:50

碰撞体(Collider),触发器(Trigger),刚体(RigidBody)的相关区分

官方解释

  • 刚体(Rigidbody):Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体组件才能受到重力的影响,通过脚本为游戏对象添加的作用力以及通过NVIDIA物理引擎与其他的游戏对象发生互动的运算都需要游戏对象添加了刚体组件。

    用来模拟一个物体受到力作用时的表现,如图中参数,Mass质量,Drag阻力等。
  • 碰撞体(Collider):碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。

    包括不同的 Box Collider(盒碰撞体),Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。
  • 触发器(Trigger):在Collider面板勾选IS Trigger将其设为触发器。

碰撞产生的条件(可调用OnCollisionEnter/Stay/Exit)

1.必须双方都要有碰撞器,发生碰撞的是碰撞器。
2.运动的一方一定要有刚体,另一方有无刚体无所谓。
注:如果运动的一方无刚体,它去碰撞静止的刚体,相当于没有装上。(无法调用OnCollisionEnter/Stay/Exit)

碰撞器与触发器的区别

1.碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。
2.当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;
3.当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。

何时使用触发器

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

相关实验结果

碰撞事件

1.控制A(刚体加碰撞体)撞击 静止的B(只有碰撞体),双方能收到碰撞事件。
2.控制B(只有碰撞体)撞击 静止的A(刚体加碰撞体),双方收不到碰撞事件。

触发事件(均为控制A撞B)

1.A(碰撞体),B(没有碰撞体,无论有没有刚体),没有触发事件。
2.A(碰撞体),B(碰撞体),没有触发事件。
3.A(碰撞体和刚体,开启IsTrigger),B(碰撞体,关闭IsTrigger),双方都能收到触发事件。
4.A(碰撞体和刚体,关闭IsTrigger),B(碰撞体,开启IsTrigger),双方都能收到触发事件。
5.A (碰撞体,关闭IsTrigger),B(碰撞体和刚体,开启IsTrigger),没有触发事件。
6.A (碰撞体,开启IsTrigger),B(碰撞体和刚体,关闭IsTrigger),没有触发事件。

0 0