我这里有个大问题。我需要知道我目前处于哪个动画师状态,以便让某些事情发生。我一直在搜索这个问题,但是因为 mecanim 动画太新了,所以没有太多关于它的信息。至少不适合统一脚本。
希望有人能帮忙,
谢谢,罗伯特丹
我这里有个大问题。我需要知道我目前处于哪个动画师状态,以便让某些事情发生。我一直在搜索这个问题,但是因为 mecanim 动画太新了,所以没有太多关于它的信息。至少不适合统一脚本。
希望有人能帮忙,
谢谢,罗伯特丹
不幸的是我不懂 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。
它不工作试试这个: print (currentBaseState.nameHash +" "+ stateId);
并播放动画。它们不一样
NOVA,我意识到你的答案是 2 年前的,但如果你使用“完整路径”而不是 .nameHash,它就会匹配。
obl.GetCurrentAnimatorStateInfo (0).fullPathHash == Animator.StringToHash ("Base Layer.StateName")