【问题标题】:How to use the same animation clip for Multiple objects in Unity?如何在 Unity 中为多个对象使用相同的动画剪辑?
【发布时间】:2019-08-05 23:44:21
【问题描述】:

我有 2 个简单的按钮,每 10 秒我希望其中一个按钮动画(沿 X 轴左右摇动)仅 2 秒。

2 Buttons Image

所以我在 Unity 中为 First Button 上的摇动动画创建了一个动画控制器和一个动画剪辑,效果很好,但对于 Second Button 的东西出错了,因为第二个按钮捕捉到第一个按钮的位置,然后应用动画。

现在我知道是什么导致了这个问题,那就是我在动画剪辑中移动了 第一个按钮从它的 X 位置 (X = 413) 左右开始,而 第二个按钮的 X 位置是 (X = 640),这意味着 第二个按钮 将捕捉到 (X = 413) 以应用动画。

我的问题是:是否可以将相同的动画剪辑应用于不同的对象?或者我必须使用其他软件创建动画片段并统一使用?

【问题讨论】:

  • 你在使用根运动吗?
  • 不,我不是,有什么建议吗?
  • 宁可使用父对象,在场景中移动该对象并仅设置子对象与该父对象的相对位置动画

标签: c# unity3d


【解决方案1】:

是否可以将相同的动画剪辑应用于不同的对象?

是的。

但是,如果没有看到您的代码和您的确切设置,就很难为您的问题提供可靠的解决方案。但是,我相当相信您的问题与我最近遇到的问题完全相同。

在我给你解决方案之前,请允许我解释一下问题的原因(假设我们谈论的是同一个问题):

当您为对象设置动画时,为了论证的缘故,假设Transform 组件的position,您正在为它设置动画绝对。换句话说,如果关键帧将变换沿 x 轴移动 '5',那么真正发生的事情不是相对移动,而是 绝对之一,其中'5'添加到当前位置绝对

因此,如果起始位置是 (125, 0),那么在这种情况下,动画会将其保留为 (130, 0)(因为我们在 x 上移动了“5”)。如果您随后决定要将动画对象移动到屏幕上的其他位置,例如 (250, 0),您会发现一旦此动画开始播放,它会将对象捕捉回 (125, 0) 播放动画。

正如您可能猜到的那样,这是因为动画中的第一个关键帧表明该位置位于 (125, 0)。它不关心(甚至不知道)对象本身现在位于 (250 ,0)。

我知道您在问题中提到了这一点,但我只是想尽可能清楚地说明这一点。

好的,希望我已经解释了问题的原因,现在寻求解决方案:

将一个空的GameObject 设置为您要设置动画的对象。

完成后,当您为按钮的位置设置动画时,移动将相对相对于父级而不是绝对。

注意:您可能需要在此更改后重做动画,以使按钮从 (0, 0) 变为 (5, 0)。然后,当您添加更多按钮时,您可以重复使用动画,只需确保它们是另一个 GameObject 的父级并位于 (0, 0) 处。

【讨论】:

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