【问题标题】:How to change animator states from a key press in Unity?如何通过 Unity 中的按键更改动画师状态?
【发布时间】:2020-06-01 22:44:44
【问题描述】:

我正在开发一款小型节拍游戏作为暑期项目。当按下一个键时,我试图改变精灵动画。

这是我的代码:

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

public class Test : MonoBehaviour
{
    Animator anim;
    void Start()
    {
        anim = gameObject.GetComponent<Animator>();
    }

    void Update()
    {
        if (this.anim.GetCurrentAnimatorStateInfo(0).IsName("Jotaro Idle"))
        {
            if (Input.GetKey(KeyCode.D))
                anim.SetTrigger("WalkRightfromIdle");
            else if (Input.GetKey(KeyCode.A))
                anim.SetTrigger("WalkLeftFromIdle");
        }
    }
}

这是我的动画窗口的截图(每个转换都由一个触发器控制):https://imgur.com/a/f93GrAn

任何帮助将不胜感激。

【问题讨论】:

  • 这里你应该使用 Bools 而不是触发器,例如isWalkingLeftisWalkingRight 并执行类似if isWalkingLeft => 进入向左行走状态,if isWalkingRight => 进入向右行走状态,如果两者都没有 => 进入空闲状态

标签: c# unity3d sprite animator


【解决方案1】:

尝试使用anim.Play(...) 而不是anim.SetTrigger(...)

【讨论】:

  • 我有。在这方面它似乎也不起作用。
  • 你的空闲动画还在播放吗?您是否已将脚本和动画师附加到游戏对象?
  • 播放预览时会播放空闲动画。我将动画师附加到我的精灵对象上,但我不确定如何附加脚本。
  • 用这个代码把你的脚本拖到主摄像头面板,它会自动附加。或者您可以将其添加为任何可用的物理,您只需在此处选择脚本,然后选择您的脚本。此外,您可能必须将脚本附加到您正在更改的动画游戏对象上,因此它可以确保仅更改该对象的动画状态。
  • 将脚本附加到我的 Sprite 对象并不能解决问题。我用 SetTrigger 和 Play 测试了它。我现在也想知道是否需要 GetComponent 的 gameObject 线索。有必要吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
相关资源
最近更新 更多