我在这里遇到了很大的问题。我需要知道我现在所处的动画师状态,以便让事情发生。我一直在搜索这个问题,但因为mecanim动画是如此新颖,所以没有太多关于它的信息。至少不适用于unityscript。
希望有人能提供帮助,
谢谢, RóbertDan
答案 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;)