【问题标题】:Unity 5.5.0f3 play animation backwards at runtimeUnity 5.5.0f3 在运行时向后播放动画
【发布时间】:2017-06-04 08:33:13
【问题描述】:

Unityforums 上的原始问题here

我一直在尝试让动画不仅可以减速和加速,还可以根据用户对 Hololens 应用程序的输入进行回放。我使用的是 Mecanim 系统,而不是旧版动画。

整个事情应该在运行时通过动态用户输入发生。

我知道通过脚本编写是可能的,因为在一些 Unity-Collaborate 问题期间我丢失本地进度和一些文件之前,它已经工作了。听起来很愚蠢,但从那时起,我就无法记住我所做的与目前的方法有什么不同。

现在我正在处理值 Animator.speed,但这仅适用于值 >= 0。

任何帮助将不胜感激!

编辑:如果链接不起作用或任何人都无法看到,这是我的代码:

private Animator anim;
 //...
 anim = gameObject.GetComponent<Animator>();
 //...
 public void OnManipulationUpdated(ManipulationEventData eventData)
     {
         if (anim.isActiveAndEnabled)
         {

             anim.speed = eventData.CumulativeDelta.x;
             anim.Play("KA_Cover_Anim");
             return;
         }
         //...
     }

Edit2:错误地标记为重复!链接的问题不考虑类似的问题,需要不同的解决方案

Edit3:为澄清起见,链接的“重复”使用与我的问题无关的旧动画系统。在 Unity 5.xx 中的新动画系统 Mecanim 中,您无法直接访问动画,如所选答案所示。如第二个答案所示,也无法更改动画速度。

【问题讨论】:

  • 你必须展示你尝试过的东西
  • 您必须阅读我写的内容:“现在我正在操作值 Animator.speed,但这仅适用于值 >= 0。”并不是说听起来像个混蛋,但我清楚地澄清了我的想法,也没有要求任何人给我写代码。
  • “你必须阅读我写的东西:”这样的态度不会让你到任何地方。我只是想帮忙。我们怎么知道为什么没有你的代码它就不能工作?祝你好运!
  • 我可能误解了,但是您的第一条评论的态度似乎很相似,所以我这样回答。奇怪的是,在您对某条评论感到冒犯后,您滥用自己的声誉对问题投了反对票。我真的试图澄清我不是在攻击你,只是我非常清楚地表明了我的尝试并且我不是在找人为我做这件事。
  • 哦,你也可以按照我提供的链接向你展示我的代码;)

标签: c# animation unity3d hololens unity3d-mecanim


【解决方案1】:

我不确定您的最终目标是什么,但您可以通过使用参数以不同的速度向后播放动画。

在动画状态下,你可以让它观察一个参数并将它与动画的默认速度相乘。你需要在代码中做的就是像

animator.setFloat("Speed",-1.0f);

希望对您有所帮助。

【讨论】:

  • 你可能是对的。还没有真正弄清楚参数。我最终复制了动画制作者的状态,让复制品反向播放并在状态之间切换,同时检查所需的动画速度和标准化时间。这样我就可以毫无障碍地在两种状态之间切换,因为下一个状态会在1-timePassed如果你愿意的话
  • 我测试了它,它有点工作。出于某种原因,我检查时间是否超过最大值或低于 0 不再起作用,所以我现在将坚持我的解决方案(NTARS ;))
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2022-08-09
  • 1970-01-01
  • 2020-03-02
  • 2016-07-21
相关资源
最近更新 更多