我正在尝试使用OpenGL开发一个2D游戏,目标平台是Android。
我知道如何在屏幕上打印图像并使其动起来。但是,在我的游戏中,我有一张地图,并且想要对地图进行缩放和滚动。但我无法找到最佳的方法。
有人可以帮助我吗?
我正在尝试使用OpenGL开发一个2D游戏,目标平台是Android。
我知道如何在屏幕上打印图像并使其动起来。但是,在我的游戏中,我有一张地图,并且想要对地图进行缩放和滚动。但我无法找到最佳的方法。
有人可以帮助我吗?
我没有任何API示例,但我在大学学习了游戏设计,所以我会给出我的两分建议。
你使用的方法将取决于你的地图风格、大小、功能和格式。
例如,如果你正在寻找非常静态且不变的地图,则使用简单的图片。你可以使用图片视图的API框架,使你能够像在画廊中一样放大和缩小,并在缩放图像时滚动,或者在这种情况下,在地图上缩放位置。
另外,如果你的地图基于平铺系统,一个很好的例子是旧款Game Boy上的原始宝可梦和塞尔达传说游戏,那么每个区域都会为自己存储一个瓷砖“缩略图”作为位图。然后根据发现的区域,将它们放置在网格的适当位置。
这可能是构建地图最灵活的方式,因为你不依赖于整个地图的设置位图,这意味着它可以高效地改变其外观;你可以按需构建它以显示所选区域(对于仅显示玩家覆盖的地方的地图非常有用),而且这还意味着你可以进行基于瓷砖的叠加:
即,如果某个区域应该包含宝藏,则在地图网格上这些瓷砖的x、y位置上覆盖一个宝藏图标。
我在大学的游戏项目中使用了平铺选项,这使得其他与地图相关的事情变得更加容易。它还使得地图方面的存储更小。
最简单的方法就是在渲染地图之前调用glTranslatef(-scrollX,-scrollY,0),然后再调用glScalef(zoom,zoom,zoom)。