Unity3D-Collider(碰撞器)和觸發(fā)器(Trigger)

一、碰撞器(Collider)

? ? ? ? ? ? ? ? 如: Box Collider 盒碰撞器、Capsule Collider 膠囊碰撞器、Mesh Collider 網(wǎng)格碰撞器、Sphere Collider球碰撞器? 等等這一類組件就是碰撞器。

1、碰撞器的方法

2、碰撞器的幾種情況

(1)情況一:當(dāng)兩個(gè)游戲?qū)ο髶碛袆傮w和碰撞器,不管腳本掛載那個(gè)游戲?qū)ο笊砩隙伎梢赃M(jìn)入OnCollision,兩者都掛在碰撞器腳本都會(huì)調(diào)用各自身腳本上的OnCollision方法。

結(jié)果:

(2)情況二:

? · 白色膠囊沒有剛體,但是有碰撞器,也有碰撞器腳本,一開始不會(huì)進(jìn)入自身的碰撞器方法。

· 紅色的小球有剛體,有碰撞器,也有碰撞器腳本,一開始就會(huì)進(jìn)入自身的碰撞器方法打印與地面的接觸。

· 當(dāng)兩個(gè)物體發(fā)生碰撞,兩者腳本中的碰撞器方法都會(huì)被觸發(fā)打印

結(jié)果:

在一開始發(fā)現(xiàn)只有有剛體的紅色小球打印了自己的碰撞器方法

兩物體在碰撞中

當(dāng)發(fā)生碰撞后如下結(jié)果

各自的腳本打印

(3)情況三:紅色的小球有剛體,有碰撞器,也有碰撞器腳本,一開始就會(huì)進(jìn)入自身的碰撞器方法打印與地面的接觸,而膠囊怎不會(huì)打印任何方法。

二者相碰,一擁有剛體與碰撞器并且身上掛載碰撞器方法的紅色小球遇到?jīng)]有碰撞器的膠囊(不管有沒有剛體)會(huì)穿過去。

結(jié)果:

(a)白色膠囊沒有剛體 、沒有碰撞器

(b)白色膠囊有剛體 、沒有碰撞器

(4)情況四:當(dāng)碰撞兩方只有碰撞器沒有剛體會(huì)互相穿過

? ? ? ? ? ? ? ? ? ? ? ? ?結(jié)果很明顯:沒有打印任何東西

總結(jié):

1、只要有剛體有碰撞器,并且與其他碰撞器碰撞就會(huì)進(jìn)入自身的碰撞器方法

2、沒有剛體,有碰撞器的物體被一個(gè)擁有剛體的碰撞器碰撞,都會(huì)調(diào)用自身的碰撞器方法。

3、沒有剛體的兩個(gè)碰撞器相撞不會(huì)調(diào)用任何碰撞器方法

得出結(jié)論:

<1>碰撞器(Collider)不需要?jiǎng)傮w(Rigidbody)

<2>剛體(Rigidbody)要發(fā)生碰撞,一定需要碰撞器(Collider)

<3>碰撞器決定了碰撞發(fā)生時(shí)的邊界條件

<4>剛體決定了碰撞發(fā)生后的物體的運(yùn)動(dòng)效果

<5>沒有碰撞器的剛體,會(huì)在物理模擬中相互穿透。

二、觸發(fā)器(Trigger)

? ? ? ? ? ? 這些(Box Collider 盒碰撞器、Capsule Collider 膠囊碰撞器、Mesh Collider 網(wǎng)格碰撞器、Sphere Collider球碰撞器? 等等這一類組件。)碰撞器在檢視面板中勾選IsTrigger屬性就變成了觸發(fā)器

1、觸發(fā)器方法

2、觸發(fā)器的幾種情況

(1)情況一:當(dāng)兩方?jīng)]有剛體,只有觸發(fā)器,,不會(huì)打印觸發(fā)器方法。

無打?。?/p>

其中一方是觸發(fā)器,另一方是碰撞器,都不會(huì)打印東西。

無打印

(2)情況二:當(dāng)有剛體的觸發(fā)器,一開始就會(huì)與其相撞的物體產(chǎn)生交互,穿透,并打印觸發(fā)方法。

打印結(jié)果:

(3)情況三:

當(dāng)它與方塊碰撞的時(shí)候,會(huì)打印各自的觸發(fā)器方法,如下圖:

(4)情況四:當(dāng)兩方都有觸發(fā)器并且都擁有剛體,碰撞的時(shí)候會(huì)打印各自的觸發(fā)器方法

(5)情況五:只要一方是觸發(fā)器,另一方有碰撞體就會(huì)觸發(fā)各自的觸發(fā)器方法

結(jié)論:

1、想要打印觸發(fā)器方法,必須有一方是觸發(fā)器,必須有一方帶有剛體。二者缺一不可。

2、雙方都是觸發(fā)器,或者其中一方是觸發(fā)器,另一方是碰撞器,都不會(huì)打印。

3、只要一方是觸發(fā)器,并且有剛體組件,不管另一方是碰撞體還是觸發(fā)器都會(huì)打印各自的觸發(fā)器方法。

4、一般我們將觸發(fā)器方法寫在角色碰到的物體上,角色一般不參與觸發(fā)方法。只寫碰撞方法。

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

<1>碰撞器是觸發(fā)器的載體,而觸發(fā)器只是碰撞器身上的一個(gè)屬性。

<2>當(dāng)IsTrigger=false時(shí),碰撞器根據(jù)物理引擎引發(fā)碰撞,產(chǎn)生碰撞的效果,可以調(diào)用OnCollisionEnter/Stay/Exit函數(shù);

<3>當(dāng)IsTrigger=true時(shí),碰撞器被物理引擎所忽略,沒有碰撞效果,可以調(diào)用OnTriggerEnter/Stay/Exit函數(shù)。

<4>如果既要檢測到物體的接觸又不想讓碰撞檢測影響物體移動(dòng)或要檢測一個(gè)物件是否經(jīng)過空間中的某個(gè)區(qū)域這時(shí)就可以用到觸發(fā)器。

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

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

  • 什么是碰撞器? 描述了物體可被碰撞的邊界,以及碰撞過程中相互影響效果。碰撞效果:兩個(gè)游戲?qū)ο笈鲈谝黄穑ㄟ^物理引擎...
    大錘丶閱讀 36,546評(píng)論 1 18
  • 無論是碰撞檢測還是觸發(fā)檢測,他們都基于Collider組件。兩個(gè)游戲?qū)ο蟀l(fā)生碰撞時(shí),碰撞器可以產(chǎn)生系統(tǒng)默認(rèn)的碰撞產(chǎn)...
    S_H_C閱讀 3,135評(píng)論 0 3
  • 1、什么是碰撞器? 描述了物體可被碰撞的邊界,以及碰撞過程中相互影響效果。碰撞效果:兩個(gè)游戲?qū)ο笈鲈谝黄?,通過物理...
    _涼笙閱讀 29,088評(píng)論 0 5
  • 0、什么是碰撞器?描述了物體可被碰撞的邊界,以及碰撞過程中相互影響效果。碰撞效果:兩個(gè)游戲?qū)ο笈鲈谝黄?,通過物理引...
    游戲開發(fā)小Y閱讀 1,691評(píng)論 0 0
  • 墨云如紫意淋淋 綠衣成片俏衣裳 百花逐放爭相溢 夏花繁盡艷時(shí)光 于2017夏
    莜麥花開閱讀 278評(píng)論 0 0

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