Unity3d碰(pèng)撞(zhuàng)器與觸發器的區別
2018/8/7 點擊:
要產生碰撞必須為遊戲對象添(tiān)加剛體(Rigidbody)和碰撞器,剛體可以讓(ràng)物體在物理影響下運動。碰撞體是物理組件的一類,它要與剛(gāng)體一起添加(jiā)到遊戲對象上才能觸發碰撞。如果兩個剛體相互撞在一起,除非兩(liǎng)個對象有碰撞體時物理引擎才會計算碰撞,在(zài)物(wù)理模擬中,沒有碰撞體的(de)剛體會彼此(cǐ)相互穿過。
物體發生碰(pèng)撞的必要條件
兩個(gè)物體都必須帶有碰撞器(Collider),其中一個物體還必須帶(dài)有Rigidbody剛(gāng)體。
在unity3d中,能檢測碰(pèng)撞發生的方式有兩種(zhǒng),一種是利用碰撞器,另(lìng)一(yī)種則是利用觸發器。
碰撞(zhuàng)器:一群組件,它包含(hán)了很多種類,比如:Box Collider(盒碰撞體),Mesh Collider(網(wǎng)格碰撞體)等,這些碰(pèng)撞器應用的場合不同,但都必須加到GameObjecet身上。
觸發器,隻需要在檢視麵板中的碰撞器組件中勾選IsTrigger屬性選擇框。
觸發信息檢測(cè):
1.MonoBehaviour.OnTriggerEnter(Collider collider)當進入觸發器
2.MonoBehaviour.OnTriggerExit(Collider collider)當(dāng)退出觸發器
3.MonoBehaviour.OnTriggerStay(Collider collider)當逗留觸發器
碰撞信息(xī)檢測(cè):
1.MonoBehaviour.OnCollisionEnter(Collision collision) 當進入(rù)碰撞(zhuàng)器
2.MonoBehaviour.OnCollisionExit(Collision collision) 當退出碰撞器
3.MonoBehaviour.OnCollisionStay(Collision collision) 當逗留(liú)碰撞器
兩個物體相接觸時到底執行OnTriggerEnter還(hái)是執行OnCollisionEnter方法,這兩個又有什麽(me)區別呢?
為了驗證碰撞器與觸發器(qì)的區別,現設計一個簡單的遊戲,讓小汽車與小球發生碰(pèng)撞。新建一個C#腳本文件,把它拖給小汽車對(duì)象,雙擊該腳(jiǎo)本(běn)文件(jiàn)進入腳本編輯器,在(zài)該(gāi)腳本中加入如下兩個(gè)方(fāng)法,並分別設置一個(gè)斷點:
voidOnTriggerEnter(Collider collider) {//進入觸發器執行的代碼}
voidOnCollisionEnter(Collision collision) {//進入碰撞器(qì)執行的代(dài)碼}
當未勾選碰撞器的Is Trigger選項時汽車與球體發生碰撞,進入方法OnCollisionEnter,碰撞之後汽車(chē)產生被球體撞飛的效果:
如果將碰撞器的Is Trigger屬性選中,再次啟動遊戲讓球體與汽車(chē)產生(shēng)接觸,這時進入方法OnTriggerEnter。之後球體直接穿過汽車,但球體與汽車都沒有產生碰(pèng)撞效果:
unity3d中的碰撞器和觸發器的區別(bié)?
碰撞器是觸發器的載體,而觸發器隻是碰(pèng)撞器(qì)身上的一個屬性
當Is Trigger=false時,碰撞(zhuàng)器根據物(wù)理引擎引發碰(pèng)撞,產生碰撞的效(xiào)果,可以調用OnCollisionEnter/Stay/Exit函(hán)數;
當Is Trigger=true時,碰撞器被物理引(yǐn)擎所忽略,沒有碰撞效果,可以調用OnTriggerEnter/Stay/Exit函數。
如果既要(yào)檢測到物體的接觸又(yòu)不想讓碰(pèng)撞檢測影(yǐng)響物體(tǐ)移動或要檢測一個物件是否經過空間中的某個區域這時就可以用到觸發器
例子(zǐ):
碰撞器:汽車被撞(zhuàng)飛、皮球掉在地上又(yòu)彈起效果
觸發器:人站在靠近(jìn)門的位置門自動打開效果
物體發生碰(pèng)撞的必要條件
兩個(gè)物體都必須帶有碰撞器(Collider),其中一個物體還必須帶(dài)有Rigidbody剛(gāng)體。
在unity3d中,能檢測碰(pèng)撞發生的方式有兩種(zhǒng),一種是利用碰撞器,另(lìng)一(yī)種則是利用觸發器。
碰撞(zhuàng)器:一群組件,它包含(hán)了很多種類,比如:Box Collider(盒碰撞體),Mesh Collider(網(wǎng)格碰撞體)等,這些碰(pèng)撞器應用的場合不同,但都必須加到GameObjecet身上。
觸發器,隻需要在檢視麵板中的碰撞器組件中勾選IsTrigger屬性選擇框。
觸發信息檢測(cè):
1.MonoBehaviour.OnTriggerEnter(Collider collider)當進入觸發器
2.MonoBehaviour.OnTriggerExit(Collider collider)當(dāng)退出觸發器
3.MonoBehaviour.OnTriggerStay(Collider collider)當逗留觸發器
碰撞信息(xī)檢測(cè):
1.MonoBehaviour.OnCollisionEnter(Collision collision) 當進入(rù)碰撞(zhuàng)器
2.MonoBehaviour.OnCollisionExit(Collision collision) 當退出碰撞器
3.MonoBehaviour.OnCollisionStay(Collision collision) 當逗留(liú)碰撞器
兩個物體相接觸時到底執行OnTriggerEnter還(hái)是執行OnCollisionEnter方法,這兩個又有什麽(me)區別呢?
為了驗證碰撞器與觸發器(qì)的區別,現設計一個簡單的遊戲,讓小汽車與小球發生碰(pèng)撞。新建一個C#腳本文件,把它拖給小汽車對(duì)象,雙擊該腳(jiǎo)本(běn)文件(jiàn)進入腳本編輯器,在(zài)該(gāi)腳本中加入如下兩個(gè)方(fāng)法,並分別設置一個(gè)斷點:
voidOnTriggerEnter(Collider collider) {//進入觸發器執行的代碼}
voidOnCollisionEnter(Collision collision) {//進入碰撞器(qì)執行的代(dài)碼}
當未勾選碰撞器的Is Trigger選項時汽車與球體發生碰撞,進入方法OnCollisionEnter,碰撞之後汽車(chē)產生被球體撞飛的效果:
如果將碰撞器的Is Trigger屬性選中,再次啟動遊戲讓球體與汽車(chē)產生(shēng)接觸,這時進入方法OnTriggerEnter。之後球體直接穿過汽車,但球體與汽車都沒有產生碰(pèng)撞效果:
unity3d中的碰撞器和觸發器的區別(bié)?
碰撞器是觸發器的載體,而觸發器隻是碰(pèng)撞器(qì)身上的一個屬性
當Is Trigger=false時,碰撞(zhuàng)器根據物(wù)理引擎引發碰(pèng)撞,產生碰撞的效(xiào)果,可以調用OnCollisionEnter/Stay/Exit函(hán)數;
當Is Trigger=true時,碰撞器被物理引(yǐn)擎所忽略,沒有碰撞效果,可以調用OnTriggerEnter/Stay/Exit函數。
如果既要(yào)檢測到物體的接觸又(yòu)不想讓碰(pèng)撞檢測影(yǐng)響物體(tǐ)移動或要檢測一個物件是否經過空間中的某個區域這時就可以用到觸發器
例子(zǐ):
碰撞器:汽車被撞(zhuàng)飛、皮球掉在地上又(yòu)彈起效果
觸發器:人站在靠近(jìn)門的位置門自動打開效果
- 上一篇(piān):unity碰撞檢測要點總結 2018/8/7
- 下一篇:CATIA插件二次開(kāi)發C# 2018/6/22
