개체와 충돌 할 때 나타나는 대화 대화를 화합 키로 만들려고합니다. 채팅 대화는 충돌이 종료 될 때까지 유지되어야합니다. 문제는 채팅 대화 상자가 충돌 할 때 키를 눌렀을 때 나타나지만 같은 초에 거짓으로 바뀌어 깜박 거린다는 것입니다. bool은 충돌하는 동안 true로 유지되는 대신 재설정됩니다.유니티 채팅 대화 시스템
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 이벤트에 실제로 연결해야합니다. 그리고 그 콜백 메쏘드의 불린 (Boolean)을 토글합니다. 하지만 트리거 시스템을 사용하는 통일 자산 저장소에는 대화 관리자 시스템이 있으며 누구도 트리거 시스템에 문제가 없습니다. 트리거를 사용하는 것이 좋은 이유는 게임에서 모니터링하는 대상이 많을 때 시스템 비용이 저렴하다는 것입니다. 사용하는 코드를 표시하도록 내 대답을 업데이트했습니다. –
트리거 대신 충돌 이벤트를 사용하려면 OnCrrorEnter 및 OnTriggerExit를 OnCollisionEnter 및 OnCollisionExit으로 변경하십시오. –