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函數。
用處:
如果既要檢測到物體的接觸又不想讓碰撞檢測影響物體移動或要檢測一個物件是否經過空間中的某個區域這時就可以用到觸發器
例子:
碰撞器:汽車被撞飛、皮球掉在地上又彈起效果
觸發器:人站在靠近門的位置門自動打開效果