【问题标题】:Unity Javascript - Mecanim animator stateUnity Javascript - Mecanim 动画状态
【发布时间】:2013-04-16 23:16:45
【问题描述】:

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

希望有人能帮忙,

谢谢, 罗伯特·丹

【问题讨论】:

    标签: unity3d unityscript


    【解决方案1】:

    很遗憾我不懂 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。

    【讨论】:

    • 感谢您的回答,确实应该很容易翻译。还是觉得很难,呵呵。但我会尝试更多。希望最终能成功!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多