2017-02-21 101 views
0

我试图编写一个蛇游戏(我对这些都有点新鲜),而且我目前被困在这个碰撞函数中。我试图按照这里的说明Detecting collision of rectangle with circle 但我仍然很困惑。例如,圆形和矩形的坐标X和Y总是在变化。此外,我不知道如何在我的游戏板对象中调用我的圆形和矩形元素,我正在编写我的碰撞检测... snakeHead是我的圆和食物元素我的矩形。圆形和矩形的碰撞和范围

这里是我的代码...很抱歉,如果我没有表达自己的超清晰的方式因此混乱......

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"); } 

回答

0

有些线路似乎是不正确的,这是我校(我猜想蛇头位置是头的中心):

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