2017-05-30 291 views
0

我正在構建一個基本的太空射擊遊戲,但在觸發對撞機時遇到了問題。在Unity中快速移動遊戲對象的碰撞檢測

在遊戲中,我有一個Bullet預製有一個Capsule Trigger Collider附加在它上面,敵人現在是一個帶有箱子對撞機的基本立方體。

當我運行遊戲時,我開始拍攝子彈和敵人的立方體不會消失,直到幾槍後。

這裏是我的子彈預製代碼:

void OnTriggerEnter(Collider col) { 
     if (col.tag == "Enemy") { 
      Destroy (col.gameObject); 
     } 
    } 

而且我的每個遊戲對象的屬性截圖:

子彈預製:

Bullet Prefab

這裏是敵方魔方:

enter image description here

這裏所發生的事情的一個視頻的鏈接...

https://youtu.be/NjHK6oVP0OQ

+1

[如何防止碰撞體相互傳遞?](https://stackoverflow.com/questions/9688237/how-to-prevent-colliders-from-passing-through-each-other) – Serlite

回答

1

據我所知,這個問題可能是一個類似於在評論中發表,但是我沒有找到另一種解決方案,對於有這個確切問題的人來說可能有些用處。

發生錯誤是因爲我的「Bullet」預製件移動得太快以至於無法檢測到碰撞。

修復:我改變了子彈預製件的碰撞檢測屬性剛體爲連續動態的,因爲它是移動速度快。完整參考剛體碰撞檢測模式鏈接如下。

enter image description here

https://docs.unity3d.com/ScriptReference/Rigidbody-collisionDetectionMode.html

這和「相似」的問題的答案張貼在註釋之間的區別是,答案有很多事情要做的光線投射與非常簡單的對撞機(這是更多的是我正在尋找)。

+0

絕對是一種有效的引擎內解決方法 - 但值得注意的是,在某些情況下,即使此模式可能會錯過高速小物體的碰撞。如果它適合你雖然,太棒了!當然是一個比需要手動檢測即將發生的碰撞更簡單的解決方案。 – Serlite