You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity3D中门打开后无法完全关闭的问题求助

问题排查:Unity门无法完全关闭

在Unity中制作测试门时,发现门打开后无法完全关闭。已确认关门动画设置正确,且将门悬空排除了碰撞阻碍,核心代码如下:

// 注意:原代码第一块逻辑缺少触发条件,需确认实际触发逻辑
{
    unlockedSound.Play();
    locked = false;
    keyOB.SetActive(false);
    StartCoroutine(unlockDoor());
}

if (inReach && doorisClosed && unlocked && Input.GetButtonDown("Interact"))
{
    door.SetBool("Open", true);
    door.SetBool("Closed", false);
    openText.SetActive(false);
    openSound.Play();
    doorisOpen = true;
    doorisClosed = false;
}

else if (inReach && doorisOpen && unlocked && Input.GetButtonDown("Interact"))
{
    door.SetBool("Open", false);
    door.SetBool("Closed", true);
    closeText.SetActive(false);
    closeSound.Play();
    doorisOpen = false;
    doorisClosed = true;
}

if (inReach && locked && Input.GetButtonDown("Interact"))
{
    openText.SetActive(false);
    lockedText.SetActive(true);
    lockedSound.Play();
}

IEnumerator unlockDoor()
{
    yield return new WaitForSeconds(0.05f);
    {
        unlocked = true;
        lockOB.SetActive(false);
    }
}

具体排查方向

  • 简化Animator参数逻辑
    不需要同时维护Open和Closed两个布尔参数,用单个IsOpen参数即可控制开关状态,避免参数冲突。检查Animator状态机的过渡条件:从"打开"到"关闭"的过渡是否仅依赖IsOpen=false,且未勾选Has Exit Time(避免动画未走完就中断)。

  • 同步代码变量与Animator状态
    代码中同时维护doorisOpen/doorisClosed和Animator参数,容易出现不同步问题。建议直接读取Animator参数判断门的状态,去掉冗余变量:

    bool isDoorOpen = door.GetBool("Open");
    if (inReach && !isDoorOpen && unlocked && Input.GetButtonDown("Interact"))
    {
        door.SetBool("Open", true);
        // 其他打开逻辑
    }
    else if (inReach && isDoorOpen && unlocked && Input.GetButtonDown("Interact"))
    {
        door.SetBool("Open", false);
        // 其他关闭逻辑
    }
    
  • 验证动画片段结尾状态
    在Animator窗口手动播放关门动画,查看动画最后一帧门的Transform(位置/旋转)是否完全回到初始关闭状态。如果动画本身结尾未归位,播放完自然会有偏移。

  • 排查冗余逻辑与变量初始化
    原代码第一块逻辑缺少触发条件(比如是否检测到钥匙),如果每帧都执行会意外修改locked/unlocked变量,导致状态混乱。另外,unlockDoor()协程的0.05秒延迟意义不大,可直接将unlocked=true放在解锁逻辑中,去掉协程测试。

内容的提问来源于stack exchange,提问作者cope

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:30:41