圆和矩形碰撞和范围

时间:2017-02-21 15:34:40

标签: javascript html5

我试图编写一个蛇游戏(我对这一切都不熟悉)并且我目前仍然坚持这个碰撞功能。我尝试按照此处的说明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"); }

1 个答案:

答案 0 :(得分:0)

有些线条似乎不正确,这是我的修正(我认为snakeHead位置是头部的中心):

var distX = Math.abs(snakeHead.x - FoodElement.x - FoodElement.w / 2);
var distY = Math.abs(snakeHead.y - FoodElement.y - FoodElement.h / 2);