【问题标题】:How can I make an animation in Unity play just once and then switch back to another animation如何让 Unity 中的动画只播放一次然后切换回另一个动画
【发布时间】:2017-05-30 20:11:24
【问题描述】:

我正在用 Unity 制作一个 2d 游戏,我为主角创建了 4 个动画;上、下、左、右。为此,我制作了动画并使用如下代码触发它们:

anim.SetBool ("movingUp", true);

当按下向上键时会发生这种情况。这种类型的动画很容易处理,因为它不是基于时间,而是玩家希望角色处于该状态多长时间。我现在正在尝试添加一个动画,当角色与另一个游戏对象碰撞时触发。我不知道如何制作,所以动画只会播放一次,然后再回到另一个动画。有没有办法在 Unity 中触发动画只播放一次?

【问题讨论】:

  • 将动画视为状态,将动画控制器视为状态机。我会制作一个空闲动画并将其作为条目。让您的其他动画解决这个问题,然后根据逻辑回退到默认(空闲)动画。您可以通过单击设置每个动画的属性。它们在检查器中弹出
  • @mtrueblood 角色永远不会处于空闲状态,这并不能真正回答我的问题我已经了解如何使用动画我让它们工作,我只是现在不知道如何制作动画只玩一次。你不能用状态来逻辑你的方式,因为角色处于它击中游戏对象一瞬间的状态,没有足够长的时间来播放动画,所以你如何播放动画直到它完成是我要问的
  • 您应该提供更多详细信息,我的评论仅作为一般评论,因为我不确定您的问题到底是什么。您可以为动画设置固定的持续时间并从动画面板关闭循环。

标签: c# animation unity3d


【解决方案1】:

一般来说,您不必编写自己的控制器,Unity 已经有了,here 是 Unity 官方教程如何使用它的链接。您需要的是 fire off a trigger 就像您在 collision 上所做的一样,并在控制器中的该动画上检查 has exit time。之后,您只需将状态引导回您希望它返回的动画。同样,准确而全面的教程可以在网上找到关于术语 Unity Mecanim how toAnimations in Unity 或类似的东西。

【讨论】:

    【解决方案2】:

    制作一个动画控制器并将 4 个动画添加到其中。然后用布尔值在它们之间进行转换。您是否将其作为自动动画执行而不触发它?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-02
      • 2018-03-12
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多