【问题标题】:Playing two separate animations one after another upon completion完成后依次播放两个单独的动画
【发布时间】:2013-08-02 14:17:44
【问题描述】:

我试图统一播放两个动画(每个动画是主摄像机的两条独立路径),根据我的研究,我认为我需要使用以下内容:

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

    animation.PlayQueued("CameraMovement", QueueMode.PlayNow);
    animation.PlayQueued("SpaceSceneMovement", QueueMode.CompleteOthers);

}

但是,将此代码附加到我的相机后,我的游戏仍然只播放第一条路径。我创建了路径,以便不同路径之间应该有半秒的延迟。我的相机的动画组件中有两个动画(见附图),我很困惑为什么这不起作用。

我错过了什么吗?

【问题讨论】:

  • 我没有时间给你写一个正确的解决方案,但是更新运行每一帧,所以你开始第一帧,排队第二帧,在下一帧你播放第一帧具有更高的优先级(playnow)。这会随着每一帧无限重复,这意味着只有第一个动画会播放。如果这是一次性的,则可能将代码移至 Start()
  • 试过了,还是不行。

标签: c# unity3d


【解决方案1】:

如 user2025312 所述,您在每一帧都调用代码。这意味着您告诉它的每一帧立即播放第一个动画,然后将第二个动画排队。那是行不通的。

根据您想做什么,您有多种选择。假设您想连续循环播放两个动画。你可以做的是:

void Update () {
    if (!animation.isPlaying)
    {
        animation.PlayQueued("CameraMovement", QueueMode.PlayNow);
        animation.PlayQueued("SpaceSceneMovement", QueueMode.CompleteOthers);
    }
}

应该很容易理解,它检查是否有动画正在播放,如果没有,它会将两个动画排队,立即播放第一个。这将在Update() 内正常工作。

但是,如果您希望只播放一次动画序列(或在触发器上),请将这两行放在 Start() 或您选择的方法中。

void Start () {
    animation.PlayQueued("CameraMovement", QueueMode.PlayNow);
    animation.PlayQueued("SpaceSceneMovement", QueueMode.CompleteOthers);
}

这应该可以正常工作。如果不是,请验证您的动画是否单独运行。

【讨论】:

  • 谢谢。这行得通。原来我也勾选了“自动播放”。我把它关掉了,现在可以正常工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2018-01-14
相关资源
最近更新 更多