Я кодирую игру, которая включает в себя столкновение движущегося круга, контролируемого пользователем, и движущийся прямоугольник, управляемый компьютером.Обнаружение столкновений круга и прямоугольника
Полный код можно найти здесь: Game
У меня возникли проблемы с обнаружением столкновений между кругом и прямоугольником. Когда прямоугольник статичен, обнаружение столкновения работает отлично. В тот момент, когда края круга и прямоугольника касаются любой стороны, программа действует так, как предполагается.
Однако, когда я даю движение прямоугольника, столкновение отлично работает с правой стороны прямоугольника, но не слева.
Я могу играть с цифрами, чтобы они работали слева, но не справа, однако я не могу заставить его работать правильно с обеих сторон. Есть ли простое исправление, которое мне не хватает?
Я приложил несколько фотографий, чтобы проиллюстрировать, что я имею в виду.
Это функция обнаружения столкновения.
function collisionDetection(player,rect) {
var distX = Math.abs(player.x - player.dx - rect.x - rect.w/2);
var distY = Math.abs(player.y - rect.y - rect.h/2);
if (distX >= (rect.w/2 + player.r - player.dx)) {
return false;
}
if (distY > (rect.h/2 + player.r)) {
return false;
}
if (distX <= rect.w/2) {
return true;
}
if (distY <= rect.h/2) {
return true;
}
}
if(collisionDetection(player,rect)) {
alert("You Lose");
document.location.reload();
}
Спасибо
Возможный дубликат [Круг-Rectangle обнаружения столкновения (пересечения)] (http://stackoverflow.com/questions/401847/circle-rectangle- столкновение-обнаружение-пересечение) – JHS