碰撞檢測函數的區別

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 ,  (overrideRaycastHit hitInfo, float distance  =  Mathf.Infinity, int layerMask = kDefaultRaycastLayers) 光線投射

在場景中投下可與所有碰撞器碰撞的一條光線。

Parameters參數

  • origin
    在世界座標,射線的起始點。
  • direction
    射線的方向。
  • (overridehitInfo
    (重載參數) 如果函數返回true,hitInfo將包含碰到器碰撞的更多信息。
  • distance
    射線的長度。
  • layerMask
    只選定Layermask層內的碰撞器,其它層內碰撞器忽略。
Returns

當光線投射與任何碰撞器交叉時爲真,否則爲假。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章