Я пытаюсь закодировать змеиную игру (я новичок в этом), и я сейчас застрял на этой функции столкновения. Я пытался следовать инструкциям здесь Detecting collision of rectangle with circle , но я все еще довольно смущен. Например, координаты X и Y круга и прямоугольника всегда меняются. Кроме того, я не уверен, как называть мой круг и элементы прямоугольника в моем объекте игрового поля, где я пишу свое деление на столкновение либо ... snakeHead - это мой круг и foodElement мой прямоугольник.столкновение круга и прямоугольника и область видимости
Вот мой код ... Извините, если я не выразить себя в супер ясной манере отсюда и путаница ...
function collision(snakeHead, FoodElement) {
var snakeHead = {x, y, r}; //r is radian
var FoodElement = {x, y, w, h}; //w: width, h: height
var distX = Math.abs(snakeHead.x - FoodElement.y - FoodElement.w/2);
var distY = Math.abs(snakeHead.x - FoodElement.y - FoodElement.h /2);
if (distX > (FoodElement.w/2 + circle.r)) {return false;}
if (disY > (FoodElement.h/2 + circle.r)) {return false;}
if (distX <= (FoodElement.w/2)) { return true; }
if (distY <= (FoodElement.h/2)) { return true; }
var dx = distX - FoodElement.w/2;
var dy = distY - FoodElement.h/2;
return (dx*dx+dy*dy<=(snakeHead.r*snakeHead.r));
console.log("IMPACT"); }