【问题标题】:unity animation.play() doesn't workunity animation.play() 不起作用
【发布时间】:2014-04-04 14:32:32
【问题描述】:

我有一个简单的脚本可以为我的播放器设置动画,但它不起作用。我看了一段时间的论坛,有些人对动画遗留选项有问题,我修复了它,但我的角色仍然没有动画,也没有任何编译错误。这是我的脚本:

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");
          }*/
    }
}

这是我的游戏对象和动画:

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: c# animation scripting unity3d


    【解决方案1】:

    来自manual

    Play() 将以动画名称开始动画,或播放默认动画 动画。动画将突然播放,没有任何混合。

    由于您每帧都调用它,我想它只会显示动画的第一帧,然后被下一个动画停止。在下一个更新中播放。试试这个:

    if (!animation.isPlaying) {
        animation.Play();
    }
    

    一般来说,我建议将 Mechanim 用于角色动画。

    【讨论】:

    • 使用 Mechanim 完成了这项工作,而且它更易于使用多个动画和状态。非常感谢。
    【解决方案2】:

    与上述解决方案一起使用的另一个可行选项是 CrossFadeQueued。

    您只需使用下面的功能,它就会无缝地交叉淡入淡出。

    用法是PlayAnimation("mcrunsw");

    function PlayAnimation(AnimName : String) {
        if (!animation.IsPlaying(AnimName))
            animation.CrossFadeQueued(AnimName, 0.3, QueueMode.PlayNow);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多