首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unity聊天对话系统

Unity聊天对话系统
EN

Stack Overflow用户
提问于 2017-04-11 20:15:10
回答 2查看 853关注 0票数 0

我正在尝试制作一个聊天对话,当与物体碰撞并按下一个键时,对话应该会显示出来。聊天对话应一直保持到冲突退出。问题是,聊天对话框在碰撞时显示在按键上,但在同一秒内变为假,因此它闪烁。在冲突中,布尔值将被重置,而不是保持为真。

代码语言:javascript
复制
        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++;
  }

此外,脚本被正确地附加,并且网格碰撞器被设置为碰撞游戏对象。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-04-11 20:23:10

你真的应该考虑在没有触发器而不是冲突的情况下这样做。所以为每个NPC制作一个单独的触发框,你可以在你的游戏中与之交谈。然后在你的播放器脚本中使用OnTriggerEnter和OnTriggerExit。OnTriggerEnter您可以通过单击按钮来允许对话开始,然后OnTriggerExit您可以关闭覆盖。

代码语言:javascript
复制
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();
}
票数 0
EN

Stack Overflow用户

发布于 2017-04-11 20:53:47

您可以执行以下操作

  1. 从OnTriggerEnter.
  2. Create ChatDialogueHandler脚本和为事件添加侦听器生成事件。
  3. 在事件引发时启用聊天对话框,并在一段特定时间后禁用聊天对话框。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43345637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档