我正在开发2D游戏。我将游戏地图保存在名为gameMap的js对象{}上。我的问题是读取矩阵上的项目需要很长时间。对于碰撞检测,我通常必须检查10或20个地图矩阵,耗时约1毫秒,屏幕上包含10个字符的碰撞检测成为应用程序的瓶颈,每帧16毫秒应占用10毫秒。同样,当地图太大时,比例会放大。
假设地图有1000 x 1000个项目。现在,如果我想检查(-100,200)
位置上的内容,请检查gameMap['-100'][200]
。我的想法是将地图分为四部分,将100 x 100项分组。因此,要检查(-100,200)
,我将测试gameMap[quadrantName][-100][200]
。这意味着,尽管gameMap的大小大致相同,但可以处理更少的项目,并且读取速度可能会以很小的比例扩大。有谁知道这是否会使阅读更快?我还能做些什么来提高阅读速度?
最佳答案
首先,一个10000x10000字节数组将消耗100MB!您真的需要这么大的阵列吗?也许最好只存储所有元素的坐标...
关于您的问题-您可以将2d数组转换为1d数组并通过访问所有单元格
gameMap[y * 10000 + x]
其中10000为地图的“宽度”。因此,无需将地图划分为多个象限。