JavaScript画布碰撞边缘检测

5

嘿,我正在尝试获取画布中两个对象碰撞的侧面。以下是我用于检测碰撞的代码,但它只检查碰撞,而没有特定的侧面。

其中o1和o2是具有以下属性的对象:

x - X轴上的位置
y - Y轴上的位置
w - 矩形的宽度
h - 矩形的高度

var collidesWith = function (o2) {
    var o1 = this;
    if ((o1.y + o1.h) < o2.y) {
        return 0;
    }
    if (o1.y > (o2.y + o2.h)) {
        return 0;
    }
    if ((o1.x + o1.w) < o2.x) {
        return 0;
    }
    if (o1.x > (o2.x + o2.w)) {
        return 0;
    }
    return 1;
};

编辑: 我想分享一下我为元素顶部的碰撞检测编写的代码:

if (
    (o1.y - o1.dy >= o2.y) &&
    (o1.y - o1.dy <= o2.y + o2.h) &&
    (o1.x + o1.w >= o2.x) &&
    (o1.x <= o2.x + o2.w)
) {
    // We have collision at the top end
}
1个回答

8
您需要像这样的双重条件
if ((o1.y > o2.y) && (o1.y < o2.y + o2.h)) {
  return 'top'; // o1's top border collided with o2's bottom border
}

同样地,对于其他方面也是如此。

好的,我必须进行更多的计算才能使它正常工作,但是你给了我指引。谢谢 :) - Pockata
1
如果您能分享您需要进行的计算,那就太好了。这将完美地结束这个问题 :) - Sabai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接