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

Unity3D中按下E键触发动画失效问题求助

问题分析与修复方案

你的代码因标签判断逻辑倒置,导致玩家进入Trigger后无法启动等待按键的协程,最终按下E键没有动画反馈。

核心问题点

在OnTriggerStay和OnTriggerExit方法中,你写了if (!other.CompareTag("LookTrig")),这个逻辑意味着:当接触的物体不是玩家(带LookTrig标签)时,才显示提示并直接返回。这就导致真正的玩家进入Trigger时,跳过了协程启动的代码,自然无法响应E键触发动画。

修复后的完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Fixedpress : MonoBehaviour
{
    public Animator Tributton;
    public GameObject GM;
    private Coroutine routine;

    private void Start()
    {
        GM.SetActive(false);        
    }

    private void OnTriggerStay(Collider other)
    {
        // 仅当接触的是玩家(LookTrig标签)时,才执行交互逻辑
        if (!other.CompareTag("LookTrig")) 
        {
            return; 
        }

        GM.SetActive(true);

        // 防止重复启动协程
        if (routine != null) StopCoroutine(routine);

        routine = StartCoroutine(WaitForKeyPress());
    }

    private IEnumerator WaitForKeyPress()
    {
        // 等待E键按下
        yield return new WaitUntil(() => Input.GetKeyDown(KeyCode.E));

        // 触发动画
        Tributton.SetTrigger("Fiveyon");
        Debug.Log("Fiveyon!");

        // 如需禁止重复触发,保留以下代码
        // enabled = false;
    }

    void OnTriggerExit(Collider other)
    {
        if (!other.CompareTag("LookTrig")) 
        {
            return; 
        }

        // 退出Trigger时停止协程并关闭提示
        if (routine != null)
        {
            StopCoroutine(routine);
        }
        GM.SetActive(false);
    }
}

关键修改说明

  • 调整标签判断逻辑:仅当接触的物体是玩家(LookTrig标签)时,才显示提示并启动协程,其他物体进入Trigger直接跳过处理。
  • 修正提示显示时机:将GM.SetActive(true)移到玩家标签判断通过后的逻辑中,确保只有玩家靠近时才显示选中提示。
  • 统一退出逻辑:退出Trigger时,仅当是玩家离开才关闭提示并停止协程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:46:04