Это для понга.верхняя часть столбика обнаружения столкновений
Я могу столкнуться с мячом и передним веслом, чтобы стрелять, но не мяч и вершина весла, но этот код кажется правильным для него. Этот код находится внутри объекта шара. Мяч представляет собой квадратное изображение с правильными атрибутами ширины и высоты.
// Paddle collision detection
// Hits front of paddle
if ((this.x) == (playerPaddle.x + playerPaddle.width) && (this.y > playerPaddle.y) && this.y < (playerPaddle.y + playerPaddle.height)) {
console.log("front connect");
this.vx = -this.vx;
}
// Hits top of paddle
if ((this.x + this.width) >= playerPaddle.x && this.x <= (playerPaddle.x + playerPaddle.width) && (this.y + this.height) == playerPaddle.y) {
console.log("top connect");
this.vy = -this.vy;
}
Стреляет, если я изменить && (this.y + this.height) == playerPaddle.y)
к && (this.y + this.height) > playerPaddle.y)
, но очевидно, что это неправильно, заставляя его огонь всякий раз, когда мяч находится намного ниже лопаткой. Это похоже на ошибку в браузере, поскольку это выглядит правильно для меня. Я использую хром, который, кажется, всегда работает хорошо.
Не могли бы вы дать нам фото или что-то еще? Это трудно представить. Но один комментарий в целом заключается в том, что использование == в этих типах вещей жестко, если вы используете систему кадров, поскольку в одном кадре мяч может перемещать более одного пикселя, а затем вы пропустите тот момент, когда две вещи выравниваются. Он всегда должен быть больше/меньше. –
Почему вы используете столько скобок? '+' имеет более высокий приоритет – vladkras
@ matty-d No ==, теперь верхние столкновения работают нормально, но передние столкновения срабатывают как передние, так и передние столкновения 'if (this.x playerPaddle.x && this.y> playerPaddle.y && this.y playerPaddle.x && this.x <= playerPaddle.x + playerPaddle.width && this.y + this.height > playerPaddle.y && this.y + this.height
user2602079