如何从特殊框架开始动画

时间:2015-07-27 06:42:53

标签: animation unity3d sprite

我是Unity的新手。我使用的是最新版本的Unity,5.1.2f1 Personal。

我想从特殊框架开始动画。不是第一次。

所以我搜索并得到这些答案;

http://answers.unity3d.com/questions/181903/jump-to-a-specific-frame-in-an-animation.html

http://answers.unity3d.com/questions/425985/set-the-current-time-frame-of-a-mecanim-animation.html

但在我的项目中,它没有用!我花了一些时间来解决这个问题。

情况就是这样。我正在制作Rockman(Megaman)游戏。

当角落Zero在摔倒时使用他的军刀时,我必须实施

falling_shot动画从画面开始。

观看此图片,以帮助您解释我必须做的事情。

enter image description here

这是一个简单的问题。如果我可以直接使用动画数组的索引访问每个帧,

我要做的就是将播放索引设置为下一帧的索引。这并不难。

但在Unity中,我无法直接访问动画组件

我发现我必须使用operator []之类的;

// set start frame with time 0.5
animation["JumpShotA"].time = 0.5f;

然而它没有用。这是播放动画“JumpShotAir”的代码。

这不是改变动画帧的代码,而只是播放JumpShotAir动画。

using UnityEngine;
using System.Collections;

public class ZController : MonoBehaviour {
    Animator _animator;

    // Use this for initialization
    void Start () {
        _animator = GetComponent<Animator>();
        var animation = GetComponent<Animation>();
        var jumpShotA = animation["JumpShotA"];
        animation.clip = jumpShotA.clip;
        animation.Play();
    }

    // Update is called once per frame
    void Update () {

    }
}

但是这段代码的结果是这样的;消息NullReferenceException:GetRef error。

enter image description here

我真的不知道。我错了什么?我的代码有什么问题吗?

我可以直接访问动画组件的数组吗?我该如何访问它?

如果您想下载我的测试项目,请查看。

Test project. Links to Google drive.

感谢阅读。

Unity窗口图片已更新。请检查我的错误。

enter image description here

<iframe width="560" height="315" src="https://www.youtube.com/embed/gOzhNK6qjNQ" frameborder="0" allowfullscreen></iframe>

我将动画类型更改为遗留但仍然存在问题...

1 个答案:

答案 0 :(得分:1)

确保GameObject的动画组件中的动画数组中存在JumpShotA剪辑。此错误表示您在尝试播放动画数组时没有JumpShotA的引用。