OnTrigger和OnCollision的区别
1.想要让程序判断两个物体又接触,则两个物体都必须要有Collider,并且运动的物体必须要有刚体(Rigidbody),才会发生碰撞。如果运动的物体没有刚体,也视为没有碰撞。
2.Collision碰撞:会发生物理碰撞,双方都有碰撞体(Collider),至少有一个物体有rigidbody,会触发OnCollision事件。若双方都勾选了Kinematic或者其中一个物体勾选了Trigger,则碰撞无效。
Trigger触发:不会发生物理碰撞,双方都有碰撞体(Collider),至少有一个物体有rigidbody,且至少有一个物体勾选了Trigger,会触发OnTrigger事件。
不可能同时发生碰撞与触发。
3.Collision与Trigger接触事件都有三种
Trigger:OnTriggerEnter,OnTriggerStay,OnTriggerExit
Collision:OnCollisionEnter,OnCollisionStay,OnCollisionExit
Enter事件表示两个物体接触瞬间,会执行一次事件。
Stay事件表示两个物体一直接触,会持续执行这个事件。
Exit事件表示两个物体分开瞬间,会执行一次事件。
4.IsTrigger触发器:勾选了就不会造成碰撞,也不会受到重力等物理作用力的影响。双方会直接穿越,只能判断触发。
5.Rigidbody刚体:加了碰撞体的物体会受到重力而落下,受物理作用力推动或旋转,无法穿越其他碰撞体。如果另一个物体没有刚体,与一个有刚体的物体相撞会穿过有刚体的物体,但是会判断有发生碰撞。
6.IsKinematicc运动学:自身不会受到碰撞,但是会对其他物体造成碰撞,不会受到重力等物理作用力的影响。
双方都勾选了运动学时,双方不会发生碰撞,会直接穿透,无法执行OnCollision事件。
7.Constraints限制:自身受到碰撞时,勾选的position,Rotasion不受力。
8.Drag空气阻力:提高该数值会减少下落速度与被撞飞的距离。