Unity动画播放两次

本文关键字:两次 动画 播放 Unity | 更新日期: 2023-09-27 18:13:14

我创建了一个名为AnimationController的类,并且我遇到了问题。当我按下space时,它会触发Animator中的Jump动画,但它会播放两次。我不明白它为什么这样做。有什么更好的方法来处理这个问题?

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动画播放两次

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

来自GetButton的文档:

当由buttonName标识的虚拟按钮被按下时返回true。

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

如果你使用GetButtonDownGetButtonUp代替,它应该只触发一次,对于确切的帧,按下注册。

在用户按下buttonName标识的虚拟按钮的那一帧内返回true。