1

我正在开发一款 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 的大小大致相同,但它可以使用更少的项目,并且读取速度可能会以小得多的比例提高。有谁知道这是否会使阅读速度更快?我还能做些什么来提高阅读速度?

4

1 回答 1

0

首先,一个 10000x10000 的字节数组会消耗 100MB!你真的需要这么大的数组。也许你最好只存储所有元素的坐标......

至于您的问题-您可以将二维数组转换为一维数组并通过以下方式访问所有单元格

gameMap[y * 10000 + x]

其中 10000 将是地图的“宽度”。所以没有必要将地图划分为象限。

于 2012-12-19T07:40:06.647 回答