1

我这里有个大问题。我需要知道我目前处于哪个动画师状态,以便让某些事情发生。我一直在搜索这个问题,但是因为 mecanim 动画太新了,所以没有太多关于它的信息。至少不适合统一脚本。

希望有人能帮忙,

谢谢,罗伯特丹

4

3 回答 3

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
}

就像您在上面的示例中看到的那样,动画状态的名称被散列(出于性能原因),因此您必须使用Animator.StringToHash对状态名称进行散列,以便检索与该特定状态关联的整数 id。

于 2013-04-23T17:30:15.823 回答
0

它不工作试试这个: print (currentBaseState.nameHash +" "+ stateId);

并播放动画。它们不一样

于 2013-05-16T20:51:50.690 回答
0

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

obl.GetCurrentAnimatorStateInfo (0).fullPathHash == Animator.StringToHash ("Base Layer.StateName")

于 2015-08-14T19:05:10.040 回答