我正在开发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的大小大致相同,但是它可以使用更少的项目,并且读取速度可能会以更小的比例扩展。有谁知道这是否会使阅读更快?我还能做些什么来提高阅读速度?
答案 0 :(得分:0)
首先,10000x10000字节数组将消耗100MB!你真的需要这么大的阵列吗?也许你最好只存储所有元素的坐标......
关于您的问题 - 您可以将二维数组转换为 1d数组并通过
访问所有单元格gameMap[y * 10000 + x]
其中10000是地图的“宽度”。因此,没有必要将地图划分为象限。