我正在嘗試進行統一聊天對話,當與對象碰撞並按下某個按鍵時應顯示該對話框。聊天對話應保持到碰撞退出。問題在於聊天對話在衝突時按鍵顯示,但在同一秒內變爲錯誤,因此閃爍。布爾正在重置,而不是在碰撞時保持爲真。統一聊天對話框系統
hitColliders = Physics.OverlapSphere(transform.position, 5f);
int i = 0;
while (i < hitColliders.Length) {
if (hitColliders [i].gameObject.tag == "gameobjectCollision") {
if (Input.GetKey (KeyCode.F)) {
Debug.Log ("pressed F");
DialogueController.showConversation = true;
}
break;
}
else {
Debug.Log ("Conversation Off");
DialogueController.showConversation = false;
}
i++;
}
此外,正在正確連接腳本和網格碰撞器與碰撞遊戲對象設置。謝謝。
我實際上嘗試過使用觸發器,但碰撞是一種越野車,有時對話框打開有時沒有任何反應。使用目前的方法,更新檢查每幀的衝突 –
是的,這在系統上確實非常昂貴。但是,如果你打算爲對話系統進行基於碰撞的檢測,你應該真正接入統一的OnCollisionEnter和OnCollisionExit事件。只需在該回調方法內部切換布爾值即可。 但是我在統一資產商店中有一個使用觸發器的對話管理系統,沒有人對觸發系統有任何問題。我建議使用觸發器的唯一原因是,當您有很多遊戲正在監控的對象時,它們在系統上花費較少。我更新了我的答案以顯示我使用的代碼 –
如果要使用衝突事件而不是觸發器,請將OnTriggerEnter和OnTriggerExit更改爲OnCollisionEnter和OnCollisionExit。 –