【发布时间】:2010-10-31 05:23:35
【问题描述】:
我正在开发一个自上而下的 rpg,并希望实现无缝滚动地图。也就是说,当玩家探索世界时,地图之间没有加载屏幕,也没有通往下一个区域的“门”。
我有两种方法可以打破这个世界。在顶层,我有“区域”,它只是 9 个“地图”的集合(这些区域仅由目录表示)。在该区域内,9 张地图被组织成一个 3x3 的网格。我还没有想出表示这些地图的最佳方式,无论是通过索引还是通过与其父区域的相对坐标。这些地图实际上是渲染到用户屏幕上的。考虑到每张地图的大小和视口的大小,我知道用户在地图角落时最多只能看到四张地图。
我的问题是,当玩家探索世界时,如何在代码中跟踪地图及其各自的偏移量?我正在考虑有一个map<Point, Map*>,其中 0,0 是玩家当前所在的地图。如果玩家在地图的左下角,那么东边的地图将存储为 1,0 ,南面的地图为 0,1,东南方的地图为 1,1。我预见到的问题是,我不确定这些点是可变的,如果每次玩家移动到另一张地图或地图的不同部分时重建列表会导致问题。
【问题讨论】:
-
整个世界会立刻进入记忆吗?或者你会在玩家行走时加载相邻区域?
-
它们将在玩家行走时加载。我对这个问题思考得更多一些,也许它并没有我想象的那么难。我可以只保留加载地图的列表。当我遍历列表以呈现它们时,我只是执行一些检查以查看它们与玩家所在地图的关系。我可以保留指向“当前地图”的指针,以检查列表中的所有地图.如果玩家在地图范围之外,我可以卸载它。