gpt4 book ai didi

用于简单碰撞检测的 Javascript 位图

转载 作者:行者123 更新时间:2023-11-30 06:00:47 25 4
gpt4 key购买 nike

我需要帮助/建议来改进/评论我当前的设计:)

这与简单游戏中的碰撞检测有关:动态物体(移动物体)可能会与静态物体(即地面、墙壁)发生碰撞。我正在将我的 Obj-C 模型移植到 Javascript,但我面临着关于我的实现方式的内存/性能问题。

我使用的是一种非常基本的方法:数组的数组代表我在物理不透明度方面的水平。

  • bit设置为0:透明区域,物体可以通过

  • 位设置为 1:不透明区域,物体碰撞

简单地测试像素的透明度/不透明度如下:

if (grid[x][y]) {
// collide!
}

我对 JS 的了解在性能/内存方面非常有限,无法评估这种方法有多好 :) 不知道使用数组的效率。

想象一下一个 1000 像素宽、600 像素高的关卡。这是一个小级别,但这已经意味着包含 1000 个数组的数组,每个数组最多包含 600 个条目。此外,我还没有找到一种方法来确保像低级语言那样创建一个 1 位大小的元素。

使用以下内容,我可以确定一个条目不是“其他”的东西吗?

grid[x][y] = true;
grid[x][y] = false;

感谢您的宝贵时间和意见/建议!

J.

最佳答案

如果你有一个 1000x600 的网格,你可以保证内存中至少有 601 个数组(如果反过来则为 1001)。

与其这样做,我会考虑使用 1 个数组,或(最好)一个具有映射方案的对象。

var map = {};
map["1x1"] = 1;
map["1x3"] = 1;
// assume no-hits are empty and free to move through

function canGoIn(x, y) {
return map.hasOwnProperty(x + "x" + y);
};

交替;

var map = [];
var width = 600;
map.push(0);
map.push(1);
// etc

function canGoIn(x, y) {
return map[(x * width) + y] == 1;
}

关于用于简单碰撞检测的 Javascript 位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8727994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com