【发布时间】:2018-01-23 02:16:19
【问题描述】:
我正在使用 Javascript 构建游戏,我需要进行碰撞检测。
游戏中绘制的所有内容都有自己的 ID 并存储在一个对象中。 尽管将数组用作容器,但我还是选择使用对象,因为从中删除子对象很容易。例如,当一颗子弹击中一艘船时,它就会从物体上移开。但是对于一个数组,当一个对象被删除时,所有的孩子都必须移动。拥有 ID 来跟踪所有内容真是太好了。
为了在数组中找到对,我可以这样做:
var a = [];
//Object container
for(var i = 0; i < a.lenght; i++){
for(var j = i+1; j < a.lenght; j++){
var object1 = a[i];
var object2 = a[j];
//collision detection
}
}
但是对于一个对象
var o = {};
//Object container
var progress = [];
for(var key1 in o){
progress.push(key1);
for(var key2 in o){
if(progress.indexOf(key2) === -1){
var object1 = a[i];
var object2 = a[j];
//collision detection
}
}
}
progress = [];
这比数组丑多了。有没有更好的办法?
【问题讨论】:
-
船在动吗?
-
船正在移动。游戏使用 requestAnimationFrame() 制作动画
-
对象的类型是船只、子弹、岩石和资产。它们具有独立于对象的父子结构。
标签: javascript arrays collision-detection javascript-objects