Collider(碰撞器)與IsTrigger(觸碰器)詳解

1、什么是碰撞器?

描述了物體可被碰撞的邊界,以及碰撞過程中相互影響效果。
碰撞效果:
兩個游戲?qū)ο笈鲈谝黄?,通過物理引擎產(chǎn)生類似現(xiàn)實(shí)的效果
種類?:
盒碰撞器(Box Collider)
?橢圓碰撞器(Sphere Collider)
?膠囊碰撞器(Capsule Collider)?
車輪碰撞器(Wheel Collider):專用于車輛?
網(wǎng)格碰撞器(Mesh Collider)?
地形碰撞器(Terrain Collider)

(1)網(wǎng)格碰撞器(Mesh Collider)

通過獲取網(wǎng)格對象并在其基礎(chǔ)上構(gòu)建碰撞碰撞。更加精細(xì),但是會使用更多系統(tǒng)資源。開啟Convex參數(shù)的網(wǎng)格碰撞體才可以與其他網(wǎng)格碰撞體發(fā)生碰撞。


網(wǎng)格碰撞器

通常兩個網(wǎng)格碰撞體之間不會發(fā)生碰撞,但是它們都可以與基本碰撞體發(fā)生碰撞
如果要讓它發(fā)生碰撞:開啟Convex屬性


圖片1.png
(2)盒碰撞器(Box Collider)

盒子碰撞器是一個立方體外形的基本碰撞體,該碰撞體可以調(diào)整為不同大小的長方體,可以做門,墻等

盒碰撞器
(3)橢圓碰撞器(Sphere Collider)

橢圓碰撞器是一個基本球形的基本碰撞體,球形碰撞體的三維大小可以均勻的調(diào)節(jié),適用于落石,球形障礙物。


橢圓碰撞器
(4)膠囊碰撞器(Capsule Collider)

是由一個圓柱體和與其相連的兩個半球體組成。


膠囊碰撞器
(5)車輪碰撞器(Wheel Collider):專用于車輛

是一種針對地面車輛的特殊碰撞體,有內(nèi)置的碰撞檢測、車輪物理系統(tǒng)及有滑胎摩擦的參考體。


車輪碰撞器

2、碰撞方法

我們讓紅色小球去碰撞膠囊體。

碰撞方法
情形一
Paste_Image.png
當(dāng)兩個游戲?qū)ο蠖紦碛袆傮w和碰撞器,不管腳本掛載哪個游戲?qū)ο笊砩隙伎梢赃M(jìn)入OnCollision(碰撞)方法,兩者都掛在碰撞器腳本都會調(diào)用各自身腳本上的OnCollision(碰撞)方法。
下面是打印結(jié)果:
打印結(jié)果
情形二
Paste_Image.png
白色膠囊沒有剛體,但是有碰撞器,也有碰撞器腳本,一開始不會進(jìn)入自身的碰撞器方法。
紅色的小球有剛體,有碰撞器,也有碰撞器腳本,一開始就會進(jìn)入自身的碰撞器方法打印與地面的接觸。
當(dāng)兩個物體發(fā)生碰撞,兩者腳本中的碰撞器方法都會被觸發(fā)打印
打印結(jié)果:
首先一開始發(fā)現(xiàn)只有有剛體的紅色小球打印了自己的碰撞器方法
游戲剛開始

小球與膠囊發(fā)生碰撞后,發(fā)現(xiàn)各自的腳本都能調(diào)用各自的碰撞方法了。
兩個游戲?qū)ο笈鲎埠?/div>
情形三
橢圓沒有碰撞器
紅色的小球有剛體,有碰撞器,也有碰撞器腳本,一開始就會進(jìn)入自身的碰撞器方法打印與地面的接觸。而膠囊怎不會打印任何方法二者相碰,一擁有剛體與碰撞器并且身上掛載碰撞器方法的紅色小球遇到?jīng)]有碰撞器的膠囊(不管有沒有剛體)會穿透過去。
打印結(jié)果:
打印結(jié)果

情形
情形四
都沒有剛體只有碰撞器時
當(dāng)碰撞兩方只有碰撞器沒有剛體會互相穿過
結(jié)果也是顯而易見:不會打印任何東西

總結(jié):
1、只要有剛體有碰撞器,并且與其他碰撞器碰撞就會進(jìn)入自身的碰撞器方法
2、沒有剛體,有碰撞器的物體被一個擁有剛體的碰撞器碰撞,都會調(diào)用自身的碰撞器方法。
3、沒有剛體的兩個碰撞器相撞不會調(diào)用任何碰撞器方法

最終結(jié)論:  
碰撞器(Collider)不需要剛體(Rigidbody)
剛體(Rigidbody)要發(fā)生碰撞,一定需要碰撞器(Collider)
碰撞器決定了碰撞發(fā)生時的邊界條件
剛體決定了碰撞發(fā)生后的物體的運(yùn)動效果
沒有碰撞器的剛體,會在物理模擬中相互穿透。

3、觸發(fā)器方法

觸發(fā)器方法
情形一:
都沒有剛體時
當(dāng)兩方?jīng)]有剛體,只有觸發(fā)器,不會打印觸發(fā)器方法。無打?。?br> 情形二
有剛體有觸發(fā)器
當(dāng)有剛體的觸發(fā)器,一開始就會與其相撞的物體產(chǎn)生交互,穿透,并打印觸發(fā)方法。打印結(jié)果:
打印其觸發(fā)方法
情形三
一方有剛體有觸發(fā)器而另一方都沒有
當(dāng)紅色小球有觸發(fā)器有剛體而膠囊體沒有觸發(fā)器沒有剛體的時候,兩個游戲?qū)ο笙嗷ヅ鲎玻瑑蓚€游戲?qū)ο髸蛴「髯缘挠|發(fā)方法,打印結(jié)果如下:
打印結(jié)果
情形四
當(dāng)兩方都有觸發(fā)器并且都擁有剛體,碰撞的時候會打印各自的觸發(fā)器方法
結(jié)果
只要一方是觸發(fā)器,另一方有碰撞體就會觸發(fā)各自的觸發(fā)器方法。

結(jié)論:
1、想要打印觸發(fā)器方法,必須有一方是觸發(fā)器,必須有一方帶有剛體。二者缺一不可。
2、雙方都是觸發(fā)器,或者其中一方是觸發(fā)器,另一方是碰撞器,都不會打印。
3、只要一方是觸發(fā)器,并且有剛體組件,不管另一方是碰撞體還是觸發(fā)器都會打印各自的觸發(fā)器方法。
4、一般我們將觸發(fā)器方法寫在角色碰到的物體上,角色一般不參與觸發(fā)方法。只寫碰撞方法。

4、碰撞器和觸發(fā)器的區(qū)別?

****1、****碰撞器是觸發(fā)器的載體,而觸發(fā)器只是碰撞器身上的一個屬性。
****2、****當(dāng)IsTrigger=false時,碰撞器根據(jù)物理引擎引發(fā)碰撞,產(chǎn)生碰撞的效果,可以調(diào)用OnCollisionEnter/Stay/Exit函數(shù);
****3、****當(dāng)IsTrigger=true時,碰撞器被物理引擎所忽略,沒有碰撞效果,可以調(diào)用OnTriggerEnter/Stay/Exit函數(shù)。
****4、****如果既要檢測到物體的接觸又不想讓碰撞檢測影響物體移動或要檢測一個物件是否經(jīng)過空間中的某個區(qū)域這時就可以用到觸發(fā)器。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容