在进行Android开发时创建动画的最佳方法是什么?


10

我正在尝试创建自己的第一个Android游戏,并且目前正在尝试(与负责绘图的人员和另一个程序员一起)弄清创建动画的最佳方法是什么。(动画,例如角色移动等)

起初,设计师说她可以绘制对象/角色并用闪光灯对其进行动画处理,因此她不必绘制动作的每一帧。另一个程序员和我不太了解Flash,所以我建议从Flash动画中提取所有图像,并在动画开始时让它们一个接一个地显示。

他说,这样做最终会占用过多的CPU资源,我倾向于同意,但是我真的不明白我们应该如何制作流畅的动画,而又不会在硬件上过分费力,如果可能的话,设计人员在Adobe Illustrator上绘制每个框架。

有经验的Android游戏开发人员可以帮助我平衡这一点,以便我们继续进行游戏的其他部分,因为我不知道创建动画的最佳方法是什么。

Answers:


12

如果您正在考虑使用2D动画,则先渲染一个精灵然后再渲染另一个精灵对设备来说不是问题(除非您的精灵很大)。

以下是一个典型的动画精灵,这是我稍加搜索后发现的第一个精灵。这是一种常用的技术,并且有许多网站提供免费(否则,请务必检查许可证)电子表格。

图片来源:[此处](http://gaminggroundzero.com/?page_id=31)

图片+作者来源:此处

绿色被设置为图像的透明颜色,因此您不会有任何不需要的颜色区域。您将需要了解精灵表中动画序列中每个动画的坐标才能播放它们。

对于Android,我们可以看看Chris Pruett(以前为Google)的开源游戏引擎Replica Island。源代码可用,我们可以看一下他的SpriteAnimation.javaSpriteComponent.java

SpriteAnimation只需使用帧数和唯一ID创建A ,游戏中的每个演员都可以具有多个动画。在SpriteAnimation可以给出许多AnimationFrames,各与以毫秒为单位的持续时间。这意味着可以根据角色是否移动或攻击等来交换不同的动画(请参阅参考资料AnimationComponent.playAnimation(int id))。

游戏循环的每次迭代中,AnimationFramegetFrame(float time)叫,它支票要花多少时间,因为最后的主循环迭代已经过去了,接下来决定打哪一帧,然后返回框架得到被红牌罚下渲染系统。如果动画进行得太慢,则可以跳过动画帧。

我希望该示例能够正常工作,您可以在此处查看 Android Marketplace上的实际游戏中使用的示例。


非常感谢您的详尽解释和详尽解答!我将看到如何使它适应我的游戏。这非常有帮助!
亚当·斯密

@AdamSmith:像这样使用精灵表是2D动画的最佳方法。只要您的艺术家可以将动画导出到图像中,然后您可以将其打包到一个精灵表格中
bummzack 2011年

@bummzack这就是我希望得到的答案,谢谢!
亚当·史密斯

@AdamSmith还应注意(为避免混淆),副本岛实际上并不使用精灵表,而是使用单个文件。有关Spritesheets为何有用的讨论,请参见此处和(更详细地)此处
马丁·富特

@Martin Foot,您给了很好的解释。但是我仍然感到困惑,我有10-15种动画类型,并且我每个帧都有320x480的大小,可以说是全屏动画。那么,您对我的建议是我应该为SpriteSheet或Single动画源文件买到什么?我对使用什么太困惑了。请给我最好的建议。.非常感谢....
Scorpion
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.