1.Collider.OnCollisionEnter(Collision) 进入碰撞
当collider/rigidbody与另一个collider/rigidbody碰撞接触时被调用。Collison类包含接触点,碰撞速度等信息。在这个函数如果你不使用collisionInfo,删去collisionInfo参数以避免不必要的计算。注意,如果碰撞器附加一个非动力学刚体,也仅发送碰撞事件。
2. Collider.OnTriggerEnter (Collider) 当进入触发器
当Collider(碰撞体)进入trigger(触发器)时被调用。这个消息被发送到触发器碰撞体和刚体(或者碰撞体假设没有刚体)。注意如果碰撞体附加了一个刚体,也只发送触发器事件。
对于这两种碰撞理解:
第一种碰撞是碰撞器或者刚体碰撞,第二种是触发器碰撞。第二种的碰撞是可以穿透触发器一方的,不论触发器一方是否有刚体属性。
3.MonoBehaviour.OnControllerColliderHit (ControllerColliderHit) 当控制碰撞器碰撞
在移动的时,当controller碰撞到collider时OnControllerColliderHit被调用。
4.static bool Physics.Raycast(Vector3 origin, Vector3 direction , (override) RaycastHit hitInfo, float distance = Mathf.Infinity, int layerMask = kDefaultRaycastLayers) 光线投射
在场景中投下可与所有碰撞器碰撞的一条光线。
Parameters参数
-
origin在世界坐标,射线的起始点。
-
direction射线的方向。
-
(override) hitInfo
(重载参数) 如果函数返回true,hitInfo将包含碰到器碰撞的更多信息。
-
distance射线的长度。
-
layerMask只选定Layermask层内的碰撞器,其它层内碰撞器忽略。
当光线投射与任何碰撞器交叉时为真,否则为假。