从 Unity3d 中的 Animator 获取动画状态

Posted

技术标签:

【中文标题】从 Unity3d 中的 Animator 获取动画状态【英文标题】:Get Animation states from an Animator in Unity3d 【发布时间】:2014-03-30 18:21:14 【问题描述】:

我使用 Animator 创建了两个动画状态,我想在运行类型时更改这些动画的速度。如何在运行时获取这些动画并更改它们的速度?我必须附加动画组件还是动画器就足够了?

【问题讨论】:

【参考方案1】:

使用 GetCurrentAnimatorStateInfo() 获取当前状态信息。

“基础层”是您的基础层的名称

var currentState : AnimatorStateInfo = animator.GetCurrentAnimatorStateInfo(0);
if (currentState.nameHash == Animator.StringToHash("Base Layer.Player_standing"))

    Debug.Log("I'm standing");

【讨论】:

看来这是唯一可靠的方法,但我认为它很愚蠢。【参考方案2】:
//get animation:

animator = GetComponent<Animator>();
AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);

//get animation speed, add animation speed

Debug.Log("StateInfo length:  "+stateInfo.length);

if(Input.GetKeyDown(KeyCode.A))

    animator.speed += 1f;

【讨论】:

这个答案增加了什么,answer from 3 years ago 没有?我什至没有任何解释

以上是关于从 Unity3d 中的 Animator 获取动画状态的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D中通过Animator动画状态机获取任意animation clip的准确播放持续时长

Unity3d 动画专题

求大神解惑 unity3D animation 与 animator的问题

Unity——Animator如何获取所有动画以及如何动态分帧播放

unity3d里面Animation和Animator的区别

Unity3D Animator控制参数和添加事件