Unity Javascript - Mecanim动画师状态

时间:2013-04-23 16:24:23

标签: unity3d unityscript

我在这里遇到了很大的问题。我需要知道我现在所处的动画师状态,以便让事情发生。我一直在搜索这个问题,但因为mecanim动画是如此新颖,所以没有太多关于它的信息。至少不适用于unityscript。

希望有人能提供帮助,

谢谢, RóbertDan

3 个答案:

答案 0 :(得分:0)

不幸的是我不知道JS,但是下面的C#行应该很容易翻译。 Animator。GetCurrentAnimatorStateInfo返回描述当前动画状态的AnimatorStateInfo结构。

int stateId = Animator.StringToHash("Base Layer.State Name"); 
Animator anim = GetComponent<Animator>();
AnimatorStateInfo currentBaseState = anim.GetCurrentAnimatorStateInfo(0);

if (currentBaseState.nameHash == stateId )
{
  //you are in stateId
}

就像你在上面的例子中看到的那样,动画状态的名称被哈希(出于性能原因)所以你必须使用Animator.StringToHash来哈希状态的名称,以便检索与该特定状态相关联的整数id。

答案 1 :(得分:0)

它不起作用 试试这个: print(currentBaseState.nameHash +“”+ stateId);

播放动画。他们是不同的

答案 2 :(得分:0)

NOVA,我意识到你的回答是2年前的,但如果你使用&#34;完整路径&#34;而不是.nameHash。

obl.GetCurrentAnimatorStateInfo(0).fullPathHash == Animator.StringToHash(&#34; Base Layer.StateName&#34;)