5

キャンバス内の 2 つのオブジェクトが衝突する側を取得しようとしています。これは私が衝突検出に使用しているものですが、特定の側面なしで衝突のみをチェックします。

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
}
4

1 に答える 1

8

次のようなdouble条件が必要です。

if ((o1.y > o2.y) && (o1.y < o2.y + o2.h)) {
  return 'top'; // o1's top border collided with o2's bottom border
}

他の面についても同様です。

于 2011-02-23T22:44:24.127 に答える