【发布时间】:2016-01-30 23:34:29
【问题描述】:
我已经构建了这个函数,以便能够检查两个对象是否在 AABB 碰撞类型模型中发生接触,但我无法完全弄清楚逻辑,或者更确切地说为什么它不起作用。
function hitTest(x1, y1, w1, h1, x2, y2, w2, h2) {
//x1, y1 = x and y coordinates of object 1
for (var x = 0; x < AliLength; x++) {
x1 = AliensArrR1[x].getX();
y1 = AliensArrR1[x].getY();
}
//w1, h1 = width and height of object 1
w1 = 50;
h1 = 18;
//x2, y2 = x and y coordinates of object 2 (usually midpt)
for (var x = 0; x < bullets.length; x++) {
x2 = bullets[x].getX();
y2 = bullets[x].getX();
}
// w2, h2 = width and height of object 2
w2 = 3;
h2 = 13;
if ((x1 <= x2 && x1 + w1 >= x2) &&
(y1 <= y2 && y1 + h1 >= y2) && (x2 <= x1 && x2 + w2) && (y2 <= y2 && y2 + h2))
alert("Hit");
else
return false;
};
每行有 12 张图像,每行有一个数组,我现在不担心性能,只是想确保我可以让它在一张上工作并获得正确的逻辑。
非常感谢任何建议!
编辑:我正在尝试检查宽度为 18 和 50 的对象是否与宽度为 3 和高度为 13 的另一个对象重叠,这些对象永远不会仅改变 x 和 y 轴的变化。我是做碰撞检测的新手,并且在对如何应用检查每个 x 和 y 以查看它们是否相交的逻辑进行了几次尝试之后。我想我会寻求帮助,因为我显然走错了方向。
![这就是我想要实现的目标]:http://uploads.gamedev.net/monthly_06_2011/ccs-8549-0-64600400-1307074262.gif
【问题讨论】:
-
即使在
alert()中,您也过于慷慨地使用大写字母作为首字母。在 JS 中,只有构造函数名称应该以大写字母开头。 -
我在从我的 IDE 粘贴后添加了警报,但同意来自不同的语言我仍然习惯正确的语法。这让我和你一样烦 :)!
-
好吧,我不介意你刚才提到的约定,但是
Alert()会给你一个参考错误... -
更新了我的帖子,我的版本不一样。
-
我不明白为什么你会收到参数并且什么都不做。另请注意,在
for循环之后,x1 和 y1 值将是 ali 数组中的最后一项,同样适用于 x2 y2 循环。
标签: javascript canvas collision