如何将作为动画片段的一部分发生的更改永久化?

问题描述 投票:0回答:2

我想动画一张从正面翻到背面的卡片。两张卡面都有不同的精灵作为背景。

我的卡上附有一个Animator组件。动画师将卡片围绕z轴旋转180度,并在旋转90度时更改背景精灵。一切正常。

问题是一旦动画片段完成,精灵会变回原始精灵。我尝试将动画事件添加到动画片段事件的函数结尾,并让动画片段执行GetComponent<SpriteRenderer>().sprite = ...,但这也不起作用。即使我在Unity Inspector中更改了卡的精灵,但这不起作用(精灵实际上没有改变)。

这是我的动画师的样子(Idle动画没有附加剪辑):

enter image description here

以下是其中一个动画的样子:

enter image description here

有没有办法可以让我的动画师改变我的游戏对象的精灵,然后让游戏对象保持新的精灵直到它再次被改变?我知道我可以通过协程以编程方式进行,但如果没有必要,我不想做一个解决方法。

unity3d unity3d-mecanim
2个回答
1
投票

Afaik你只需要禁用Write DefaultsStates

这意味着如果对于属性,在此状态下没有可用的关键帧,而不是使用未动画模型中的默认关键帧(无论您在编辑模式中看到什么,而不是在Animator预览中)。

因此,如果禁用它,此状态将使用它之前从动画中获取的任何当前属性值,而不是未动画值。


0
投票

将动画片段的wrapmode更改为ClampForever。

https://docs.unity3d.com/ScriptReference/WrapMode.ClampForever.html

© www.soinside.com 2019 - 2024. All rights reserved.