【问题标题】:Unity 2D how to animate X position without messing with Y?Unity 2D如何在不弄乱Y的情况下为X位置设置动画?
【发布时间】:2019-02-05 20:25:36
【问题描述】:

Unity 2D。我有几个精灵(云)应该很好地漂浮在天空中。基本上动画是相同的——它们从右到左(改变它们的 X 位置),但在不同的 Y 位置。我不知道是否可以通过一个动画/动画师来实现这一点,我应该为每个云创建单独的动画吗?

到目前为止,我未能重用一位动画师,因为他们总是折叠到相同的 Y 位置。所以我最终为每个云创建了单独的动画,但这看起来有点奇怪。有没有更好的办法?

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    动画师编写对象的变换,如果您对所有云使用相同的动画剪辑,它们将遵循您在动画中设置的相同路径。这就是为什么你所有的云共享相同的 Y 位置的原因;正如@Ivzhenko Oleksii 所说,您需要删除动画剪辑中的 Y 属性。

    您可以使用如下所示的脚本:

    void CloudAnimation()
    {
     offset += Time.deltaTime;
     newCloudPos = new Vector3 (ActualCloudPos.x - offset, ActualCloudPos.y, ActualCloudPos.z);
    
     ActualCloudPos = newCloudPos;
    }
    

    这样,您的云将在 X 轴上从右到左移动。 当您的云到达屏幕外的某个点时,您需要执行以下操作:

     ActualCloudPos = new Vector3(PlayerPos.x + 30f, RandomValueinY, 1f);
    

    这样,您的云将出现在您的玩家面前 30 个单位,并且由于“CloudAnimation”功能,它会开始他在屏幕上的移动,看起来就像它在移动一样。

    希望对你有帮助。

    【讨论】:

    • 谢谢。我考虑制作一个程序化解决方案,但我很好奇是否可以使用标准动画/动画师。
    【解决方案2】:

    如果你想使用动画师/动画技术 - 你可以使用单个动画师和动画剪辑,但你需要从动画中删除 Y pos 属性,就像在图片上一样,这里我们只有 X 变量

    【讨论】:

    • 其实这对我不起作用,因为它只意味着 X 坐标是动画的,但并不意味着 Y 和 Z 坐标可以不同。
    • @MaximLavrov 不是您所要求的不同 Y 和 Z 值吗?使用这种方法,您可以设置不同的 Y 和 Z 值,并且它将保留在那里,仅对 X 值进行动画处理。然而,由于透视,它可能会表现出意外
    猜你喜欢
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 2021-06-29
    相关资源
    最近更新 更多