我想知道是否有一种简单的方法可以在 libgdx 中制作动画。我正在考虑一个 API,我可以在其中指定纹理的持续时间和结束位置(就像在 Flash 的 Tween 库中一样)。
我在谷歌上搜索,我得到的最接近的东西是 libgdx 拥有的 Animation 类,我相信它要求用户为每个关键帧指定一个纹理。
new Animation(0.5f, texture1, texture2, texture3);
您可以使用 TextureRegion#split(texture, tileWidth, tileHeight) 来获取纹理的一堆纹理区域,如果它们被布置在网格中。您还可以在一堆松散的图像上使用 TexturePacker 将它们打包成单个纹理,然后使用 TextureAtlas 加载它。这样做的好处是它可以从每个帧中去除空白以便更好地打包,还可以做一些花哨的事情,比如别名(如果两个帧相同,它只会打包一次)。将您的帧图像命名为 anim_1.png、anim_2.png 等,然后您可以根据帧编号将所有名为“anim”的纹理区域作为有序列表。
另请注意,libgdx 中的 Animation 类过于简单。如果它不能满足您的需求,请不要犹豫,自己编写。一个动画类只有大约 20 行代码。
这取决于你想要什么样的动画。如果它是基于不同图像的动画,那么是的,您应该使用具有不同纹理区域的 Animation 类。然而,如果你想要一个基于运动插值的动画,你应该使用一个补间库,就像在 Flash 中一样。
Libgdx 有一个内置的插值器帮助器,它允许您使用缓动创建简单的插值。如果您想要一个完整的补间引擎,如 Flash 引擎,请查看 java Universal Tween Engine。
在 libgdx 中制作动画很容易。我所做的是在动画参数中使用纹理或纹理区域数组,而不是放置许多纹理或纹理区域。在我声明之后,我像这样设置动画的播放模式——>animation.setPlayMode(Animation.PlayMode.LOOP);
它可以工作。我使用浮动 runTime 变量绘制动画,该变量设置如下 runTime += delta 或runTime = runTime + delta --> spriteBatch.draw(animation.getKeyFrame(runTime), x, y, width, height);