Почему боковые столкновения мяча и платформы не работают в игре на JavaScript?CSS

Разбираемся в CSS
Ответить
Anonymous
 Почему боковые столкновения мяча и платформы не работают в игре на JavaScript?

Сообщение Anonymous »

Я создаю простую прорывную игру. Мяч должен отскочить при столкновении с платформой. Столкновения сверху и снизу работают, но столкновения слева и справа не работают.
Я создаю 2D-игру с мячом и платформой на JavaScript. Цель состоит в том, чтобы мяч отскочил от платформы при столкновении. Коллизии сверху и снизу работают нормально, но коллизии слева и справа не работают. Я использую простую функцию для проверки пересекающихся прямоугольников.
Вот ключевые детали:
  • Мяч движется со скоростью VelocityX и SpeedY.
  • Столкновения обнаруживаются с помощью функции обнаружения столкновений.
  • Для боковых столкновений я добавил дополнительные условия (leftCollision и rightCollision), но они никогда не срабатывают.

Код: Выделить всё

let board;
let boardWidth = 200;
let boardHeight = 200;
let context;

let playerWidth = 80;
let playerHeight = 15;
let playerVelocity = 10;
let player = {
x : boardWidth / 2 -  playerWidth / 2,
y : boardHeight - playerHeight - 5,
width : playerWidth,
height : playerHeight,
velocity : playerVelocity
};

let ballWidth = 10;
let ballHeight = 10;
let ballVelocityX = -2;
let ballVelocityY = 1;
let ball = {
x : boardWidth / 2,
y : boardHeight / 2,
width : ballWidth,
height : ballHeight,
velocityX : ballVelocityX,
velocityY : ballVelocityY,
}

function outOfBounds(xPosition) {
return (xPosition < 0 || xPosition + player.width > boardWidth);
}

function playerMove(event) {
let mouseX = event.clientX - board.offsetLeft;
let nextPlayerX = mouseX - player.width / 2;

if (!outOfBounds(nextPlayerX)) {
player.x = nextPlayerX;
}
}

// Обнаружение колизии
function detectCollision(rectA, rectB) {
return (
rectA.x < rectB.x + rectB.width &&
rectA.x + rectA.width > rectB.x &&
rectA.y < rectB.y + rectB.height &&
rectA.y + rectA.height > rectB.y
);
}

function topCollision(ball, block) {
return detectCollision(ball, block) && (ball.y + ball.height) >= block.y;
}

function bottomCollision(ball, block) {
return detectCollision(ball, block) && ball.y = block.x;
}

function rightCollision(ball, block) {
return detectCollision(ball, block) &&  ball.x 

Подробнее здесь: [url]https://stackoverflow.com/questions/79306713/why-dont-the-ball-and-platform-side-collisions-work-in-a-javascript-game[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «CSS»