Обнаружение стороны столкновения холста Javascript - PullRequest
4 голосов
/ 24 февраля 2011

Эй, я пытаюсь получить сторону, с которой сталкиваются два объекта на холсте. Вот что я использую для обнаружения столкновений, но он проверяет только столкновения без определенной стороны.

Где 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 Ответ

7 голосов
/ 24 февраля 2011

Вам нужно double - такие условия:

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

Аналогично для других сторон.

...