我正在研究自顶向下的RPG,并希望实现无缝滚动贴图。也就是说,当玩家探索世界时,地图之间没有加载屏幕,并且没有到下一个区域的“门”。无缝滚动瓷砖地图
我有两种方式来打破世界。在顶层,我有“区域”,它只是9个“地图”的集合(这些区域仅由目录表示)。在该区域内,9张地图被组织成3×3的网格。我还没有想出表达这些地图的最佳方法,无论是通过索引还是通过相对于其父区域的相对坐标。这些地图是实际呈现给用户屏幕的内容。考虑到每张地图的大小和视口的大小,我知道用户只能在地图的角落看到最多四张地图。
我的问题是,当玩家探索世界时,我如何跟踪代码中的地图及其各自的偏移量?我在考虑有一个map<Point, Map*>
,0,0是玩家当前所在的地图。如果玩家在地图的左下角,那么东部的地图将被存储为1,0,南方的地图为0,1,东南方向的地图为1,1。我预见到的问题是,我不确定这些分数是否可变,并且如果每次玩家移动到另一张地图或地图的不同部分时都重建列表,将导致问题。
整个世界会一次回忆吗?或者你会在玩家走路时加载相邻区域? – 2010-10-31 05:32:23
他们将在玩家走路时加载。我一直在思考这个问题,也许它不像我想的那么难。我可以保留加载的地图列表。当我遍历列表来渲染它们时,我只是预先形成一些检查来查看它们与玩家所在地图之间的关系。我可以保留一个指向“当前地图”的指针,以检查列表中的所有地图。如果玩家在地图范围之外,那么我可以卸载它。 – rcapote 2010-10-31 05:36:41