从 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 animation 与 animator的问题
Unity——Animator如何获取所有动画以及如何动态分帧播放