我正在自学 C++ 并玩 2D 瓦片映射。
我一直在这里阅读这篇scrolling
文章,它基于这个平铺教程。
使用上面的教程和Pearson, Computer Graphics with OpenGL
书中的一些帮助,我编写了一个小程序,它绘制了一个40x40
平铺的世界和一个Sprite
(也是一个平铺)。
就绘制/渲染顺序而言,地图(或世界)本身是后面的层,而 Sprite 是最前面(或顶部)的层。我假设这是一个很好的方法,因为 2 个图块比一个图块和一个自定义精灵或矩形更容易交互。那是对的吗?
我已经实现了一个Keyhandling()
功能,可以让map
你viewport
使用keyboards arrow keys
. 我有一个变量offsetx, offsety
,当按下一个键时,它会增加或减少。根据我是否将变量分配给map
or sprite
,我可以在屏幕上的任何方向上多一个或另一个。
两者似乎都不能很好地工作,所以我将变量分配给(地图和精灵),但精灵的值为正,地图的值为负。因此,在按键时,这允许我的 Sprite 向一个方向移动,而地图向相反方向移动。
我的问题是,精灵很快移动到足以离开窗口并且不足以将更多地图带入场景。(该窗口1/8th
在任何时候只显示大约的瓷砖)。
我整天都在想,我认为解决这个问题的一种有效/有效的方法是将 固定sprite
到屏幕的中心,当按下一个键时map
移动......我不确定如何实现这虽然。
这会是一个好方法吗?还是预计也会移动视口或相机?