如何在Unity中对多个对象使用相同的动画剪辑?

时间:2019-07-10 14:47:39

标签: c# unity3d

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

2 Buttons Image

因此,我已经在Unity中为 First Button 上的震动动画创建了一个动画控制器和一个动画剪辑,效果很好,但是对于 Second Button 而言发生错误,因为第二个按钮捕捉到第一个按钮的位置,然后应用了动画。

现在,我知道是什么导致了这个问题,即在动画剪辑中我正在移动 第一个按钮从其X位置左右(X = 413)开始,而第二个按钮的 X位置为(X = 640),这表示第二个按钮< / strong>将捕捉到(X = 413)以应用动画。

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

1 个答案:

答案 0 :(得分:0)

  

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

是的

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

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

为对象设置动画时,假设出于论证的缘故,position组件的Transform绝对动画。换句话说,如果关键帧沿x轴将变换移动“ 5”,则真正发生的是不是相对运动,而是绝对,其中“ 5”绝对添加到当前位置

因此,如果起始位置为(125,0),则在这种情况下动画将其保留为(130,0)(因为我们在x上移动了“ 5”)。我知道您在您的问题中提到了这一点,但我只是想使其尽可能清楚。

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

为您要设置动画的对象添加一个空GameObject

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

注意:进行此更改后,可能需要重做动画,以使按钮从(0,0)变为(5,0)。然后,当您添加更多按钮时,您可以重复使用动画,只需确保将它们作为另一个GameObject的父元素,并将它们放置在(0,0)处即可。