0、什么是碰撞器?
描述了物體可被碰撞的邊界,以及碰撞過程中相互影響效果。碰撞效果:兩個游戲對象碰在一起,通過物理引擎產生類似現實的效果
1、碰撞器方法
****情形一****:
情形一
當兩個游戲對象擁有剛體和碰撞器,不管腳本掛載那個游戲對象身上都可以進入OnCollision,兩者都掛在碰撞器腳本都會調用各自身腳本上的OnCollision方法。
打印結果:
打印結果
****情形二****:
情形二
白色膠囊沒有剛體,但是有碰撞器,也有碰撞器腳本,一開始不會進入自身的碰撞器方法。紅色的小球有剛體,有碰撞器,也有碰撞器腳本,一開始就會進入自身的碰撞器方法打印與地面的接觸。當兩個物體發生碰撞,兩者腳本中的碰撞器方法都會被觸發打印打印結果:首先一開始發現只有有剛體的紅色小球打印了自己的碰撞器方法
游戲開始兩物體未碰撞階段
結果2:
兩者碰撞后,各自的腳本方法都響應了
****情形三****:
沒有剛體,沒有碰撞器
有剛體,沒有碰撞器
紅色的小球有剛體,有碰撞器,也有碰撞器腳本,一開始就會進入自身的碰撞器方法打印與地面的接觸。而膠囊怎不會打印任何方法二者相碰,一擁有剛體與碰撞器并且身上掛載碰撞器方法的紅色小球遇到沒有碰撞器的膠囊(不管有沒有剛體)會穿過去。打印結果:
打印結果一:膠囊沒有剛體,沒有碰撞器
打印結果二:膠囊有剛體,沒有碰撞器
****情形四****:
碰撞兩方有碰撞器有碰撞器方法腳本,沒有剛體
當碰撞兩方只有碰撞器沒有剛體會互相穿過結果也是顯而易見:沒有打印任何東西
總結:
1、只要有剛體有碰撞器,并且與其他碰撞器碰撞就會進入自身的碰撞器方法2、沒有剛體,有碰撞器的物體被一個擁有剛體的碰撞器碰撞,都會調用自身的碰撞器方法。3、沒有剛體的兩個碰撞器相撞不會調用任何碰撞器方法
最終結論: 碰撞器(Collider)不需要剛體(Rigidbody)剛體(Rigidbody)要發生碰撞,一定需要碰撞器(Collider)碰撞器決定了碰撞發生時的邊界條件剛體決定了碰撞發生后的物體的運動效果沒有碰撞器的剛體,會在物理模擬中相互穿透。
2、觸發器方法
****情形一:****
案例一
當兩方沒有剛體,只有觸發器,,不會打印觸發器方法。無打印:
案例二
其中一方是觸發器,另一方是碰撞器,都不會打印東西。無打?。?/p>
****情形二:****
當有剛體的觸發器,一開始就會與其相撞的物體產生交互,穿透,并打印觸發方法。打印結果:
****情形三:****
當它與方塊碰撞的時候,會打印各自的觸發器方法。
****情形四:****
當兩方都有觸發器并且都擁有剛體,碰撞的時候會打印各自的觸發器方法
****情形五:****
只要一方是觸發器,另一方有碰撞體就會觸發各自的觸發器方法
結論:
1、想要打印觸發器方法,必須有一方是觸發器,必須有一方帶有剛體。二者缺一不可。2、雙方都是觸發器,或者其中一方是觸發器,另一方是碰撞器,都不會打印。3、只要一方是觸發器,并且有剛體組件,不管另一方是碰撞體還是觸發器都會打印各自的觸發器方法。4、一般我們將觸發器方法寫在角色碰到的物體上,角色一般不參與觸發方法。只寫碰撞方法。
3、碰撞器和觸發器的區別?
****3-1、****碰撞器是觸發器的載體,而觸發器只是碰撞器身上的一個屬性。****3-2、****當IsTrigger=false時,碰撞器根據物理引擎引發碰撞,產生碰撞的效果,可以調用OnCollisionEnter/Stay/Exit函數;****3-3、****當IsTrigger=true時,碰撞器被物理引擎所忽略,沒有碰撞效果,可以調用OnTriggerEnter/Stay/Exit函數。****3-4、****如果既要檢測到物體的接觸又不想讓碰撞檢測影響物體移動或要檢測一個物件是否經過空間中的某個區域這時就可以用到觸發器。