有人可以帮助我,有人可以解释Unity 3D中的动画吗?我已经尝试了很多,google,youtube等。
using UnityEngine;
using System.Collections;
public class PlayAnimation : MonoBehaviour {
public AnimationClip walk;
Animation anim;
void Update () {
if (Input.GetKeyDown(KeyCode.W)){
anim.clip = walk;
anim.Play();
}
}
}
答案 0 :(得分:3)
anim
变量未初始化。您可以通过两种方式初始化它:
<强> 1 强> .GetComponent
如果Animation
组件附加到同一个Gameobject,则PlayAnimation
脚本附加到:
void Start()
{
anim = GetComponent<Animation>();
}
如果Animation
组件附加到不同的Gameobject:
void Start()
{
anim = GameObject.Find("GameObjectAnimationIsAttachedTo").GetComponent<Animation>();
}
2 。设置anim
变量public
,然后从编辑器中分配。
Animation anim;
应为public Animation anim;
。现在,将带有Animation
组件的GameObject拖到anim
变量。
答案 1 :(得分:3)
根据代码的外观,您实际上从未在组件上引用附加的Animaton。尝试在Start方法中分配动画它的组件,如下所示:
public class PlayAnimation : MonoBehaviour {
public AnimationClip walk;
Animation anim;
void Start() {
anim = GetComponent<Animation>();
}
void Update () {
if (Input.GetKeyDown(KeyCode.W)){
anim.clip = walk;
anim.Play();
}
}
}
答案 2 :(得分:1)
现在这是我的代码,感谢Frederik,它可以运行。 我现在得到了参数如何工作和动画师。
using UnityEngine;
using System.Collections;
public class PlayAnimation : MonoBehaviour {
public Animator animator;
byte idle=0;
byte walk=1;
byte sprint=2;
// Use this for initialization
void Start () {
animator = GetComponent<Animator> ();
}
// Update is called once per frame
void Update () {
if (Input.GetKey (KeyCode.W)) {
animator.SetInteger ("Anumber", walk);
} else if (Input.GetKey (KeyCode.A)) {
animator.SetInteger ("Anumber", walk);
} else if (Input.GetKey (KeyCode.S)) {
animator.SetInteger ("Anumber", walk);
} else if (Input.GetKey (KeyCode.D)) {
animator.SetInteger ("Anumber", walk);
} else {
animator.SetInteger ("Anumber", idle);
}
}
}
答案 3 :(得分:0)
只是为了记录,在更新中播放动画之前必须检查是否没有播放。由于输入在更新中运行了几次
if(!anim.IsPlaying("YourClipName"){
anim.clip = walk;
anim.Play();
}