我创建了一个名为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
而不是GetButtonDown
或GetButtonUp
。
在文档中,对于GetButton
:
按住buttonName标识的虚拟按钮时,返回true。
因此,如果您按住空格键两帧(即使您按下过一次,则物理动作要花费一帧以上的时间),那么它将触发两次。如果您按住它的时间长于此时间,它将继续发射。
如果改用GetButtonDown
或GetButtonUp
,则它仅应触发一次,以记录印刷机的确切帧。
在用户按下由buttonName标识的虚拟按钮的帧期间,返回true。