碰撞器和觸發(fā)器-創(chuàng)新互聯(lián)

1、什么是碰撞器

專注于為中小企業(yè)提供網(wǎng)站設(shè)計、網(wǎng)站制作服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)朔城免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

碰撞器是一群組件,它包含了很多種類,比如: Box Collider 盒碰撞器、Capsule Collider 膠囊碰撞器、Mesh Collider 網(wǎng)格碰撞器、Sphere Collider 球碰撞器  等等這一類組件,這些碰撞器應(yīng)用的場合不同,但都必須加到GameObjecet身上。(如下圖):

碰撞器和觸發(fā)器

2、什么是觸發(fā)器

碰撞器和觸發(fā)器

所謂觸發(fā)器,只需要在檢視面板中的碰撞器組件中勾選IsTrigger屬性選擇框。如下圖:

3、區(qū)別:
    碰撞器
   1)碰撞器有碰撞效果
   2)IsTrigger=false
   3)碰撞信息檢測回調(diào)函數(shù)
  1.OnCollisionEnter( Collision other ) 當進入碰撞器(開始碰撞時)
   2.OnCollisionStay( Collision other ) 當逗留碰撞器(一直碰撞時)
   3.OnCollisionExit( Collision other)  當退出碰撞器(結(jié)束碰撞時)

觸發(fā)器
  1)觸發(fā)器沒有碰撞效果
  2)IsTrigger=true;
  3)觸發(fā)信息檢測:

1.OnTriggerEnter( Collider other )當進入觸發(fā)器
      2.OnTriggerExit( Collider other )當退出觸發(fā)器
      3.OnTriggerStay( Collider other )當逗留觸發(fā)器
4、碰撞和觸發(fā)的必要條件

碰撞測試

1)兩個cube上面都添加了collider,游戲運行發(fā)生了穿透

碰撞器和觸發(fā)器

2)我們?yōu)椤痢痢羉ube添加rigidbody,取消rigidbody上面的重力選項

碰撞器和觸發(fā)器

碰撞器和觸發(fā)器

游戲運行,我們發(fā)現(xiàn)×××cube被彈飛,而紅色cube沒有發(fā)生改變

3)我們?yōu)榧t色cube也加上rigidbody ,取消重力選項

碰撞器和觸發(fā)器

游戲運行,兩個cube都被彈開了

碰撞總結(jié)

1、如果兩個物體,只要有一個沒有Collider,即使任意一個物體有rigidbody,都會發(fā)生穿越(即,沒Collider就穿越);

2、如果兩個物體都有Collider,有rigidbody的物體會發(fā)生碰撞,而沒有rigidbody的一方則不會受到影響(注意一下誰碰誰);

3、如果兩個物體都有Collider,無rigidbody的物體碰有rigidbody的物體,則并不會發(fā)生碰撞
(易忽略,單獨拿出來講。另外這種情況下,當高速移動無rigidbody的物體時,偶爾會出現(xiàn)發(fā)生碰撞的現(xiàn)象,不知道是不是unity的一個bug)
   綜上,兩物體發(fā)生碰撞的必要條件是:
   兩個物體都必須帶有碰撞器(Collider),其中至少一個物體帶有Rigidbody剛體。(只有帶Rigidbody剛體的一方會受到物理引擎的影響)
   可能會有人想如果為物體都加上剛體不就不需要這么糾結(jié)了嗎?
有兩方面原因:
   一是游戲場景物體很多,都加剛體,系統(tǒng)的開銷會很大;
   二是有時候我就需要其中一個物體是不動的,比如地面。
 注意:
   1、在一次碰撞中,“剛接觸”和“接觸完”只被調(diào)用一次,而“碰撞中”則是在接觸時一直被調(diào)用。
   2、函數(shù)的參數(shù)則是被撞的那個物體。我們可以通過此參數(shù)獲取被撞物體信息。

我們檢測一下回調(diào)函數(shù):

我們首先創(chuàng)建一個這種場景

碰撞器和觸發(fā)器

我們給紅色小球添加rigidbody,勾選上重力選項,并添加腳本

碰撞器和觸發(fā)器

下圖為腳本內(nèi)容:

碰撞器和觸發(fā)器

運行游戲,輸出結(jié)果為:

碰撞器和觸發(fā)器

由此上面的測試我們可以清楚的看到三個方法的調(diào)用時機

其中other參數(shù)為碰撞到的物體

觸發(fā)測試

1、我們做碰撞測試的例子,我們創(chuàng)建一個下圖這樣的場景,把紅色cube的IsTrigger勾上(由于IsTrigger是觸發(fā)器身上的一個屬性,所以兩個物體都要加collider,我們暫且不加rigidbody,再紅色cube身上添加腳本)

碰撞器和觸發(fā)器

碰撞器和觸發(fā)器

運行游戲我們發(fā)現(xiàn)紅色cube會穿過×××cube但是沒有打印任何一句話。

所以觸發(fā)器的觸發(fā)條件是基于碰撞的基礎(chǔ)上的,我們分別給兩個cube加上rigidbody,取消重力選項

碰撞器和觸發(fā)器

碰撞器和觸發(fā)器紅色cube穿過×××cube并且調(diào)用了觸發(fā)器的三個回調(diào)函數(shù),其中

逗留函數(shù)調(diào)用了50次,說明紅色cube再穿過×××cube的時候(重疊)期間,一直再重復(fù)調(diào)用逗留觸發(fā)器

觸發(fā)結(jié)論
  1、和碰撞不同,觸發(fā)無論誰碰誰,結(jié)果都一樣;
  2、觸發(fā)的必要條件:至少有一個碰撞器勾選了IsTrigger,至少有一個物體具有剛體,才會觸發(fā);
  3、碰撞和觸發(fā)的聯(lián)系和區(qū)別以及何時使用它們
   由于碰撞是可以發(fā)生物理效果的同時觸發(fā)事件,而觸發(fā)是不發(fā)生物理效果的情況下觸發(fā)事件;
   所以,還是具體情況具體對待,知道了原理就靈活運用吧。
舉個例子來說吧。
    足球射到墻上會發(fā)生碰撞,而足球出界了并不會發(fā)生碰撞,而是裁判吹哨這個事件被觸發(fā)。
    那么你就可以在墻上加一個碰撞體不勾選IsTrigger,而出界線加一個Collider并勾上IsTrigger。

碰撞和檢測的相關(guān)的注意點
  兩個注意
   注意1:
   兩個物體發(fā)生碰撞,如果要檢測到碰撞信息,那么其中必有一個物體既帶有碰撞器,又帶有剛體,且檢測碰撞信息的腳本必須附著在帶有剛體的碰撞器上。

    注意2:
   兩個GameObject發(fā)生碰撞,要想檢測到觸發(fā)信息,最少要有一個剛體碰撞器并且勾選了IsTrigger復(fù)選框,另一個最少要有一個碰撞器組件,此時檢測碰撞的腳本必須附加在那個帶有剛體的觸發(fā)器上。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文標題:碰撞器和觸發(fā)器-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://bm7419.com/article46/dihhhg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、云服務(wù)器、域名注冊、App設(shè)計、網(wǎng)站導(dǎo)航營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)