碰撞觸發的區別

2021-07-31 04:00:42 字數 1438 閱讀 5811

1,測試ontriggerenter和oncollisionenter的區別

測試:如果兩個物體a,b 

兩者都有碰撞體collider(box collider,sphere collider,capsule collider等)

a,b都有剛體(rigidbody)

a或者b中有乙個勾選istrigger或者兩者都勾選istrigger a和b都可以進入ontriggerenter方法,但是不可進入oncollisionenter方法。

a和b都不勾選istrigger,a和b能進入oncollisionenter方法但是不能進入ontriggerenter方法。

結論:oncollisionenter方法必須是在兩個碰撞物體都不勾選istrigger的前提下才能進入,反之只要勾選乙個istrigger那麼就能進入ontriggerenter方法。

oncollisionenter和ontriggerenter是衝突的不能同時存在的。

2,ontriggerenter和oncollisionenter的選擇。

如果想實現兩個剛體物理的實際碰撞效果時候用oncollisionenter,unity引擎會自動處理剛體碰撞的效果。

如果想在兩個物體碰撞後自己處理碰撞事件用ontriggerenter。

3,一些技巧。

3.1:剛體(rigidbody)的使用。

兩個碰撞的物體a 和 b

現在我們就可以分兩種模式來分析了,就是ontrigger模式和oncollision模式,因為上面已經詳細介紹了兩者是對立的模式, 

在oncollision模式下:

測試1:如果只有a有剛體(rigidbody),那麼當a去碰撞b時,發現a彈開b沒有動。a和b都進入oncollisionenter方法

結論1:只有剛體能實現真實的物理碰撞。

測試2:如果只有a有剛體(rigidbody),那麼當b去碰撞a時,發現沒有碰撞效果,a和b都沒有進入oncollisionenter方法。

結論2:實現碰撞的條件是,發起碰撞方必須具有剛體。

這裡我猜測了剛體是用來實現物理真實碰撞的component,但是這個想法是錯誤的,因為ontriggerenter也必須有乙個物體具有剛體,所以猜測剛體應該是乙個判斷是否實現碰撞的是與否的標誌。

在ontrigger模式下:

a和b必須有乙個有剛體(rigidbody),a和b都可以進入ontriggerenter方法。

4,知識擴充套件。

上面的內容中有的實驗是a,b有乙個有剛體,有的實驗是a,b都有剛體,那麼為什麼不乾脆把兩個物體都加剛體就沒這麼多麻煩了?

其實是這樣的,真實遊戲裡面,有太多的物體,而這些物體如果都有剛體那麼對系統的開銷是很大的,如果可以減少一半的開銷是很不錯的選擇。

比如地面就可以不設定剛體,因為地面是永遠不動的,把人物設定剛體就可以實現真實的物理碰撞效果了。

碰撞檢測中碰撞器與觸發器的區別

物體發生碰撞的必要條件 兩個物體都必須帶有碰撞器,其中乙個物體還必須帶有剛體。在unity中,碰撞檢測的方式有兩種,一種是利用碰撞器,另一種則是利用觸發器。觸發資訊檢測 1.ontriggerenter collider collider 當進入觸發器 2.ontriggerexit collide...

碰撞與觸發事件

1.發生碰撞的兩個物體必須都帶有collider 2.發生碰撞的兩個物體至少有乙個帶有剛體 3.發生碰撞的兩個物體必須有相對運動 public void oncollisionenter collision collision 當碰撞持續發生的時候呼叫 public void oncollision...

Unity觸發及碰撞

總結 碰撞所需要的條件 1.collidr和collider 所在的層能夠碰撞或觸發 2,其中乙個物體必須有剛體 3,碰撞元件上is trigger是碰撞是否觸發的意思 碰撞器 box collider 盒碰撞器 capsule collider 膠囊碰撞器 mesh collider 網格碰撞器 ...