2013-04-23 76 views
1

我在这里遇到一个大问题。我需要知道我目前处于哪个动画制作者状态,以便发生某些事情。我在这件事上一直在寻找很多东西,但是因为mecanim动画太新了,所以没有太多关于它的信息。至少不是为了unityscript。团结Javascript - Mecanim动画师状态

希望有人能帮助,

感谢, 罗伯特·丹

回答

0

不幸的是我不知道JS,但下面的C#线应该很容易被翻译。 动画师。 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 
} 

就像你在动画状态的名字上面的例子中看到被散列(由于性能原因),所以你必须以检索与特定状态相关联的整数ID散列使用Animator.StringToHash国家的名称。

+0

感谢你的答案,这是真的,那应该很容易翻译。我仍然觉得很困难。但我会尝试更多。希望它最终解决! – 2013-04-23 21:03:58

0

它不工作 试试这个: 打印(currentBaseState.nameHash +”“+ STATEID);

然后播放动画。他们是不同的

0

NOVA,我意识到你的答案是2年前,但它匹配,如果你使用“完整的路径”而不是.nameHash。

obl.GetCurrentAnimatorStateInfo(0).fullPathHash == Animator.StringToHash( “基地Layer.StateName”)