我创建了一个名为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");
        }

    }
}

最佳答案

我对Unity非常陌生,但是我怀疑这是因为您使用的是GetButton而不是GetButtonDownGetButtonUp

在文档中,对于GetButton


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


因此,如果您按住空格键两帧(即使您按下过一次,则物理动作要花费一帧以上的时间),那么它将触发两次。如果您按住它的时间长于此时间,它将继续发射。

如果改用GetButtonDownGetButtonUp,则它仅应触发一次,以记录印刷机的确切帧。


  在用户按下由buttonName标识的虚拟按钮的帧期间,返回true。

10-08 14:04