2011-08-29 103 views
1

注意:我已经搜索了现有的答案,但无法从这个角度真正找到一些东西。如果您发现重复,请发表评论。如何创建简单的游戏动画

我在发展多年一直在努力,但我没有(ZIP!)游戏/图形开发的经验。

像许多其他人一样,我认为尝试为Android编写小型游戏会很有趣。不过,我无法真正了解创建最简单的动画所需的步骤。例如,假设我想画一辆移动在风景或地图上的小型车辆。我真的不知道从哪里开始。

我想我会需要绘制的汽车看起来如何,因为它驱动,即纺轮,有些抽搐等。这是基本上是每一个帧? - 在油漆中绘制10个图​​像,然后循环它们?接下来Q会是 - 如何循环它们?我猜想有一些动画对象/系统可以加载内容然后运行?这在平台和sdk之间可能会有所不同,但我也怀疑这些原则通常是相同的,就像大多数widget/gui系统的原理一样。

然后我猜这辆车需要动画才能在地图上移动。此动画与其他动画并行运行?

..等等等,这是非常简单的游戏动画的基本面的问题。在所有游戏中都有一些常见的工作流程,即为iPhone编写游戏的人仍然知道如何为android做同样的事情。

为了说明这一点,我没有看到三维动画或任何需要高级物理,高级数学,矩阵,网格物体等的东西。我只对你在塔中看到的那种图形感兴趣防御游戏(如 “机器人防御”),平台, “暗黑破坏神” 等-games

感谢。

+2

你应该检查出http:// gamedev。stackexchange.com/ :) – Frederik

+0

的确,应该先检查一下不要在那里试试。 – sharkin

回答

2

在GUI/Widget应用,你会通常有一个事件循环回调到您的代码时,在用户点击按钮或移动滑块或什么的。

在一个典型的游戏中,你将有一个游戏循环,它将反复轮询输入,根据输入驱动世界状态前进一步,然后将世界状态绘制到显示器上。例如(在C++中,因为它是我最舒服的语言):

//Holds everything in the game: the locations and velocities (and so on) 
//of all the dynamic elements, the map, the terrain, everything. 
WorldState worldState; 
while (worldState.continueGame()) { 
    Input input(InputSystem.pollInput()); 
    worldState.advanceByFrame(input); 
    OutputSystem.display(worldState); 
    sleep(1/stepTime); 
} 

我希望这给你一个想法,但不认为这是一个实际的游戏循环不够好。时间码特别是相当破碎。

如果你想有一个移动在地形车辆,那么你可以实现WorldState这样的:

struct WorldState { 
    void advanceByFrame(Input const& input) { 
     vehicle.moveOver(terrain); 
    } 
    Terrain terrain; 
    Vehicle vehicle; 
}; 
struct Vehicle { 
    double xPosition; 
    double yPosition; 
    int frameNumber; 
    void moveOver(Terrain const& terrain) { 
     /** some logic based on terrain */ 
     //just filler, but you can change xPosition and yPosition 
     //in whatever way you want. 
     xPosition += 32.; 
     //where numberOfFrames is determined somewhere else. 
     frameNumber = (frameNumber + 1) % numberOfFrames; 
    } 
}; 
struct Terrain { 
    /** stuff, maybe an 2d-array or whatever */ 
}; 

正如你可以看到:你的游戏元素坚持在游戏的长度,并修改通过将输入应用于游戏状态。动画可以通过在一组数字上进行循环来完成,这些数字表示从一组可能的图像中显示的当前图像的帧号。

这是非常浅的,但我希望它给你一个典型的游戏的整体结构的想法。