如何存储2D侧滚动游戏的屏幕对象?

时间:2010-11-28 20:54:43

标签: android game-engine

我正试图找出在二维侧滚动游戏中存储地图对象的最佳方法。

例如,在游戏Doodle Jump中,您跳转的平台如何存储?

我对如何做到这一点有一些想法......

平台是否存储在字符串或其他对象中,以定义每个平台的放置位置?例如,如果我定义了一个像0,10,5,8,6,2,3,4,2,.....等字符串,我可以将它们解释为游戏中每个游戏块的x坐标。我想这个问题是可能有很多游戏片要定义。游戏似乎是无穷无尽的,所以预先定义地图似乎是一个坏主意。

我也认为这些作品可能只是随机的。因此,每当地图调用新的地图块时,它会随机获取x坐标。我觉得这看起来很可行但是在玩DoodleJump时似乎并不是随机的。

有没有人知道如何存储这些地图对象以引导我朝正确的方向发展?

谢谢!

3 个答案:

答案 0 :(得分:1)

我在想一个增量高度坐标数组及其各自的宽度坐标(1d或2d数组)。由于不让坐标变大而增量 您可以使用屏幕大小来了解计算屏幕坐标的平台。当跳跃对象达到某个屏幕高度阈值时,使用它移动摄像机,计算新的屏幕坐标,省略掉落屏幕的平台并添加视图内的平台。

您可以使用具有一些随机性的算法预先生成数组,该算法具有坐标距离的最小/最大约束。使用整数时,你可以在遇到麻烦之前生成一个相当大的数组 或者使用随机函数的相同种子实时生成它,因此它每次都会生成相同的数组,并且可以无限期地继续运行

答案 1 :(得分:0)

您可以使用每个级别固定种子的随机数生成器,以便用户每次都获得相同的级别。随机数可以从适当值的数组中选择。 (我在Android游戏中成功使用过它。)

答案 2 :(得分:0)

许多平台游戏将静态地图平台(即地图中无法操纵/销毁的部分 - 例如Mario Bros.中的地砖)存储为预定义地图。这可以使用值数组或alphamap图像来完成。

如果使用数组方法,请使用字节(unsigned char)而不是int