【问题标题】:Animation in libgdxlibgdx 中的动画
【发布时间】:2011-09-04 00:54:39
【问题描述】:

我想知道是否有一种简单的方法可以在 libgdx 中制作动画。我正在考虑一个 API,我可以在其中指定纹理的持续时间和结束位置(就像在 Flash 的 Tween 库中一样)。

我在谷歌上搜索,我得到的最接近的是 libgdx 的 Animation 类,我相信它要求用户为每个关键帧指定一个纹理。

new Animation(0.5f, texture1, texture2, texture3);

【问题讨论】:

    标签: android libgdx


    【解决方案1】:

    您可以使用 TextureRegion#split(texture, tileWidth, tileHeight) 来获取纹理的一堆纹理区域,如果它们被布置在网格中。您还可以在一堆松散的图像上使用 TexturePacker 将它们打包成一个纹理,然后使用 TextureAtlas 加载它。这样做的好处是它可以从每个帧中去除空白以便更好地打包,并且还可以做一些花哨的事情,比如别名(如果两个帧相同,它只会打包一次)。将您的帧图像命名为 anim_1.png、anim_2.png 等,然后您可以根据帧编号将所有名为“anim”的纹理区域作为有序列表。

    另请注意,libgdx 中的 Animation 类非常简单。如果它不能满足您的需求,请不要犹豫,自己编写。一个动画类只有大约20行代码。

    【讨论】:

      【解决方案2】:

      这取决于你想要什么样的动画。如果它是基于不同图像的动画,那么是的,您应该使用具有不同纹理区域的 Animation 类。但是,如果您想要基于运动插值的动画,您应该使用补间库,例如 Flash。

      Libgdx 有一个内置的插值器帮助器,它允许您使用缓动创建简单的插值。如果您想要一个完整的补间引擎,如 Flash 引擎,请查看 java Universal Tween Engine

      【讨论】:

        【解决方案3】:

        在 libgdx 中制作动画很容易。我所做的是在动画参数中使用纹理或纹理区域数组,而不是放置许多纹理或纹理区域。在我声明之后,我将动画的播放模式设置为这样 --> animation.setPlayMode(Animation.PlayMode.LOOP); 它可以工作。我使用浮动 runTime 变量绘制动画,该变量设置为 runTime += delta 或 runTime = runTime + delta --> spriteBatch.draw(animation.getKeyFrame(runTime), x, y, width, height);

        【讨论】:

          猜你喜欢
          • 2014-07-06
          • 1970-01-01
          • 2023-03-15
          • 2018-06-04
          • 2016-10-17
          • 2015-11-20
          • 2012-05-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多