[英]circle and rectangle collision and scope
我正在尝试编写蛇游戏(我对所有这些都有点陌生),而我目前仍停留在此碰撞功能上。 我尝试按照此处的说明检测矩形与圆形的碰撞,但是我仍然很困惑。 例如,圆形和矩形的坐标X和Y总是在变化。 此外,我不确定如何在我编写碰撞检测的游戏板对象中调用我的圆和矩形元素。蛇头是我的圆,而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"); }
有些行似乎不正确,这是我的更正(我认为蛇头的位置是头的中心):
var distX = Math.abs(snakeHead.x - FoodElement.x - FoodElement.w / 2);
var distY = Math.abs(snakeHead.y - FoodElement.y - FoodElement.h / 2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.