我正试图找出在二维侧滚动游戏中存储地图对象的最佳方法。
例如,在游戏Doodle Jump中,您跳转的平台如何存储?
我对如何做到这一点有一些想法......
平台是否存储在字符串或其他对象中,以定义每个平台的放置位置?例如,如果我定义了一个像0,10,5,8,6,2,3,4,2,.....等字符串,我可以将它们解释为游戏中每个游戏块的x坐标。我想这个问题是可能有很多游戏片要定义。游戏似乎是无穷无尽的,所以预先定义地图似乎是一个坏主意。
我也认为这些作品可能只是随机的。因此,每当地图调用新的地图块时,它会随机获取x坐标。我觉得这看起来很可行但是在玩DoodleJump时似乎并不是随机的。
有没有人知道如何存储这些地图对象以引导我朝正确的方向发展?
谢谢!
答案 0 :(得分:1)
我在想一个增量高度坐标数组及其各自的宽度坐标(1d或2d数组)。由于不让坐标变大而增量 您可以使用屏幕大小来了解计算屏幕坐标的平台。当跳跃对象达到某个屏幕高度阈值时,使用它移动摄像机,计算新的屏幕坐标,省略掉落屏幕的平台并添加视图内的平台。
您可以使用具有一些随机性的算法预先生成数组,该算法具有坐标距离的最小/最大约束。使用整数时,你可以在遇到麻烦之前生成一个相当大的数组 或者使用随机函数的相同种子实时生成它,因此它每次都会生成相同的数组,并且可以无限期地继续运行
答案 1 :(得分:0)
您可以使用每个级别固定种子的随机数生成器,以便用户每次都获得相同的级别。随机数可以从适当值的数组中选择。 (我在Android游戏中成功使用过它。)
答案 2 :(得分:0)
许多平台游戏将静态地图平台(即地图中无法操纵/销毁的部分 - 例如Mario Bros.中的地砖)存储为预定义地图。这可以使用值数组或alphamap图像来完成。
如果使用数组方法,请使用字节(unsigned char
)而不是int
。