我有一个简单的脚本应该为我的播放器设置动画,但它不起作用。我读了一段时间的论坛,有些人有关于动画遗留选项的问题,我修复了它,但我的角色仍然没有动画,并且没有任何编译错误。这是我的剧本:
using UnityEngine;
using System.Collections;
public class maincharacter : MonoBehaviour {
void Start () {
}
float xSpeed = 10f;
float zSpeed = 10f;
public float playerMovementSpeed = 10f;
void Update () {
float deltaX = Input.GetAxis ("Horizontal") * xSpeed;
float deltaZ = Input.GetAxis ("Vertical") * zSpeed;
Vector3 trans = new Vector3 (deltaX + deltaZ ,0f,deltaZ - deltaX);
transform.Translate (trans.normalized * Time.deltaTime * playerMovementSpeed, Space.World);
animation.Play ("mcrunsw");
/*if (deltaX != 0 || deltaZ != 0) {
animation.Play ("mcrunsw");
}*/
}
}
这是我的gameObject和动画:
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:6)
来自manual:
Play()将以名称动画开始动画,或播放默认值 动画。动画将突然播放而不进行任何混合。
由于你每帧调用一次,我想它只会显示动画的第一帧,然后在下一次动画中停止下一次动画。播放。试试这个:
if (!animation.isPlaying) {
animation.Play();
}
一般来说,我建议使用Mechanim进行角色动画。
答案 1 :(得分:1)
另一个可行的选择以及上述解决方案是CrossFadeQueued。
您只需使用下面的功能,它就可以无缝地CrossFade。
用法为PlayAnimation("mcrunsw");
function PlayAnimation(AnimName : String) {
if (!animation.IsPlaying(AnimName))
animation.CrossFadeQueued(AnimName, 0.3, QueueMode.PlayNow);
}