【问题标题】:JavaScript -- Unity Check if animation has endedJavaScript -- Unity 检查动画是否结束
【发布时间】:2016-02-19 16:17:09
【问题描述】:

正如标题所说,

如何检查动画是否结束?

【问题讨论】:

  • 简要解释.. 一行问题无法回答.. 显示您编写的一些代码或其他一些工作,预期输出,当前场景。
  • 我只有启动动画的代码:animation.Play("camera_right");
  • 试试animation.isPlaying。如果它是假的,则意味着它已经结束。你也可以在动画的最后一帧添加一个事件,它会调用方法告诉你它已经完成了。
  • 这个问题已经有了一个巨大的、规范的答案:stackoverflow.com/a/35040426/294884
  • 注意@NikolaZagorac。不要使用“统一脚本”。它已被弃用并从 Unity 中删除。好消息是,使用 c# 实际上要容易得多。从今天开始改用c#。

标签: javascript animation unity3d


【解决方案1】:

编辑:您似乎正在使用旧版动画组件。我建议使用 Animator 组件。有了这个,它可以像这样完成:

Animator 组件有一个方法“GetCurrentAnimatorStateInfo(layerIndex: int)”返回一个 AnimatorStateInfo 类型的对象。

http://docs.unity3d.com/ScriptReference/Animator.html

“AnimatorStateInfo”对象有一个名为 normalizedTime 的属性,它将给出一个介于 0 和 1 之间的浮点数,其中 1 表示动画的当前循环已经播放(完成),0 表示它刚刚开始。

http://docs.unity3d.com/ScriptReference/AnimatorStateInfo-normalizedTime.html

因为我不知道你到底想要达到什么目的。我建议看一下“AnimatorStateInfo”类的 IsName 方法,通过它可以检查当前是否正在播放某个状态。

问候

【讨论】:

  • 嗨,威普斯特。这不是你的做法。你这样做..stackoverflow.com/a/35040426/294884
  • 嗨@JoeBlow,您的帖子中使用了旧动画系统,显然 Nikola Zagorac 正在使用它,所以您是对的。不过,我不建议您更喜欢“新”动画系统。使用 Animation 组件似乎非常多余,每个动画都需要一个协程。我编辑了我的答案。
  • 另外,当你使用invoke时,为什么不调用动画长度后的方法,设置一个标志,动画已经完成?不需要协程大部分时间什么都不做。
  • 嗨 Wipster,说得好,很好的答案,但你确实需要一个协程来等待动画结束(或者实际上,等待任何东西)
猜你喜欢
  • 2020-08-15
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
相关资源
最近更新 更多