bike_2024 2024-07-13 15:47 采纳率: 40%
浏览 2
已结题

这动画参数opendoor怎么不能变为true

代码有什么问题吗,我这个运行按了F键之后动画参数opendoor?没变成true,怎么个事

img

img

img

  • 写回答

6条回答 默认 最新

  • 阿里嘎多学长 2024-07-13 15:47
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    从你提供的信息来看,你遇到了Unity中Animator组件的动画参数opendoor?不能正确设置为true的问题。让我们一步步检查可能的问题:

    1. Animator doors的声明和初始化

      • 从你提供的代码片段来看,Animator doors;是正确的声明方式,但你需要确保在Start方法中对doors进行了正确的初始化,即doors = GetComponent<Animator>();
    2. 变量isOpen的逻辑控制

      • 你的代码中使用了if(isOpen && UnityEngine.Input.GetKeyDown(KeyCode.F)),但这里应该使用||而不是&&,因为你想在isOpenfalse时按下F键来打开门。正确的条件应该是if(!isOpen && UnityEngine.Input.GetKeyDown(KeyCode.F))
    3. OpenDoorO函数的调用

      • 函数名OpenDoorO可能是一个拼写错误,正确的函数名应该是OpenDoor。同时,确保调用OpenDoor函数时使用了正确的方法名和参数。根据你提供的第二张图片,正确的调用应该是doors.SetBool("opendoor?", true);
    4. 动画状态机中的参数设置

      • 根据你提供的第三张图片,参数opendoor?的状态转换条件似乎设置正确,但请注意,参数名通常不包含问号。确保在Animator Controller中参数名是opendoor而不是opendoor?
    5. 动画状态机中downingopendoor的转换条件

      • 确保在Animator Controller中,从downing状态到opendoor状态的转换条件是设置为opendoor?参数为true
    6. 其他可能的问题

      • 确保Animator Controller已经附加到了你的GameObject上,并且GameObject上有Animator组件。
      • 检查是否有其他脚本或逻辑可能影响了Animator的状态。

    根据你提供的信息,这里是一个可能的修正后的代码示例:

    public Animator doors;
    bool isOpen = false;
    
    void Start()
    {
        doors = GetComponent<Animator>();
    }
    
    void Update()
    {
        if (!isOpen && UnityEngine.Input.GetKeyDown(KeyCode.F))
        {
            OpenDoor();
        }
    }
    
    void OpenDoor()
    {
        doors.SetBool("opendoor", true); // 注意这里参数名应该是"opendoor"
        isOpen = true;
    }
    

    请注意,上述代码假设你的Animator Controller中有一个名为opendoor的布尔参数,并且你已经正确设置了状态机中的转换条件。

    如果你在检查和尝试上述建议后仍然遇到问题,可以提供更多的信息,我会尽力帮助你解决。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 7月31日
  • 已采纳回答 7月23日
  • 创建了问题 7月13日