我正在尝试制作一个聊天对话,当与物体碰撞并按下一个键时,对话应该会显示出来。聊天对话应一直保持到冲突退出。问题是,聊天对话框在碰撞时显示在按键上,但在同一秒内变为假,因此它闪烁。在冲突中,布尔值将被重置,而不是保持为真。
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++;
}此外,脚本被正确地附加,并且网格碰撞器被设置为碰撞游戏对象。谢谢。
发布于 2017-04-11 20:23:10
你真的应该考虑在没有触发器而不是冲突的情况下这样做。所以为每个NPC制作一个单独的触发框,你可以在你的游戏中与之交谈。然后在你的播放器脚本中使用OnTriggerEnter和OnTriggerExit。OnTriggerEnter您可以通过单击按钮来允许对话开始,然后OnTriggerExit您可以关闭覆盖。
public void Update()
{
if (inInteractRange && Input.GetKeyDown(KeyCode.E))
{
DialogueSystemManager.Instance.StartDialogueForNpc(interactableNPCName);
}
}
private void OnTriggerEnter(Collider col)
{
inInteractRange = true;
}
private void OnTriggerExit(Collider col)
{
inInteractRange = false;
DialogueSystemManager.Instance.CloseDialogueWindow();
}发布于 2017-04-11 20:53:47
您可以执行以下操作
https://stackoverflow.com/questions/43345637
复制相似问题