Unity动画播放两次

时间:2015-09-17 15:00:22

标签: c# unity3d

我创建了一个名为AnimationController的类,我遇到了问题。当我按space时,它会触发Jump中的Animator动画,但它会播放两次。我无法弄清楚它为什么会这样做。有什么更好的方法可以解决这个问题?

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Animator))]
public class AnimationController : MonoBehaviour {

    Animator animator;
    AnimatorStateInfo baseLayer;

    void Start() {
        animator = GetComponent<Animator>();
        baseLayer = animator.GetCurrentAnimatorStateInfo(0);
    }

    void Update () {
        if(Input.GetButton("Jump") && !baseLayer.IsName("Jump")) {
            animator.SetTrigger("Jump");
        }

    }
}

1 个答案:

答案 0 :(得分:4)

我是Unity的新手,但我怀疑这是因为您使用的是GetButton而不是GetButtonDownGetButtonUp

从文档中,GetButton

  

按住buttonName标识的虚拟按钮时返回true。

所以,如果你持有空格键两帧(即使你按了一次,物理动作需要的时间超过一帧),那么它会发射两次。如果你把它保持的时间超过那个时间,就会继续射击。

如果您改为使用GetButtonDownGetButtonUp,则只应点击一次,对于注册印刷机的确切帧。

  

在用户按下buttonName标识的虚拟按钮的框架中返回true。