https://blog.csdn.net/u012338130/article/details/102565333
測(cè)試OnTriggerEnter和OnCollisionEnter的區(qū)別
測(cè)試:如果兩個(gè)物體A,B
兩者都有碰撞體collider(Box Collider剥险,Sphere Collider,Capsule Collider等)
A夫植,B都有剛體(Rigidbody)
A或者B中有一個(gè)勾選isTrigger或者兩者都勾選isTrigger A和B都可以進(jìn)入OnTriggerEnter方法治拿,但是不可進(jìn)入OnCollisionEnter方法殉农。
A和B都不勾選isTrigger你雌,A和B能進(jìn)入OnCollisionEnter方法但是不能進(jìn)入OnTriggerEnter方法厚棵。
結(jié)論:
OnCollisionEnter方法必須是在兩個(gè)碰撞物體都不勾選isTrigger的前提下才能進(jìn)入,反之只要勾選一個(gè)isTrigger那么就能進(jìn)入OnTriggerEnter方法箫津。
OnCollisionEnter和OnTriggerEnter是沖突的不能同時(shí)存在的狭姨。
OnTriggerEnter和OnCollisionEnter的選擇。
如果想實(shí)現(xiàn)兩個(gè)剛體物理的實(shí)際碰撞效果時(shí)候用OnCollisionEnter苏遥,Unity引擎會(huì)自動(dòng)處理剛體碰撞的效果饼拍。
如果想在兩個(gè)物體碰撞后自己處理碰撞事件用OnTriggerEnter。
一些技巧
剛體(Rigidbody)的使用田炭。
兩個(gè)碰撞的物體A 和 B
現(xiàn)在我們就可以分兩種模式來分析了师抄,就是OnTrigger模式和OnCollision模式,因?yàn)樯厦嬉呀?jīng)詳細(xì)介紹了兩者是對(duì)立的模式教硫,
在OnCollision模式下:
測(cè)試1:如果只有A有剛體(Rigidbody)叨吮,那么當(dāng)A去碰撞B時(shí),發(fā)現(xiàn)A彈開B沒有動(dòng)栋豫。A和B都進(jìn)入OnCollisionEnter方法
結(jié)論1:只有剛體能實(shí)現(xiàn)真實(shí)的物理碰撞挤安。
測(cè)試2:如果只有A有剛體(Rigidbody)谚殊,那么當(dāng)B去碰撞A時(shí)丧鸯,發(fā)現(xiàn)沒有碰撞效果,A和B都沒有進(jìn)入OnCollisionEnter方法嫩絮。
結(jié)論2:實(shí)現(xiàn)碰撞的條件是丛肢,發(fā)起碰撞方必須具有剛體。
這里我猜測(cè)了剛體是用來實(shí)現(xiàn)物理真實(shí)碰撞的Component剿干,但是這個(gè)想法是錯(cuò)誤的蜂怎,因?yàn)镺nTriggerEnter也必須有一個(gè)物體具有剛體,所以猜測(cè)剛體應(yīng)該是一個(gè)判斷是否實(shí)現(xiàn)碰撞的是與否的標(biāo)志置尔。
在OnTrigger模式下:
A和B必須有一個(gè)有剛體(Rigidbody)杠步,A和B都可以進(jìn)入OnTriggerEnter方法。
知識(shí)擴(kuò)展。
上面的內(nèi)容中有的實(shí)驗(yàn)是A幽歼,B有一個(gè)有剛體朵锣,有的實(shí)驗(yàn)是A,B都有剛體甸私,那么為什么不干脆把兩個(gè)物體都加剛體就沒這么多麻煩了诚些?
其實(shí)是這樣的,真實(shí)游戲里面皇型,有太多的物體诬烹,而這些物體如果都有剛體那么對(duì)系統(tǒng)的開銷是很大的,如果可以減少一半的開銷是很不錯(cuò)的選擇弃鸦。
比如地面就可以不設(shè)置剛體绞吁,因?yàn)榈孛媸怯肋h(yuǎn)不動(dòng)的,把人物設(shè)置剛體就可以實(shí)現(xiàn)真實(shí)的物理碰撞效果了唬格。