我有一个对象数组,都是'矩形'。我也有一个圆形物体。我用于引力的等式是:
newYPos = oldYPos + prevFallingSpeed + gravity
基本上,我将重力加到前一帧中圆圈“掉落”的像素数,然后将其添加到最后一帧中圆圈的位置。
我正在使用此代码检测球的任何部分是否在任何物体内:
for(var i = 0; i < objects.length; i++){
if(ball.x > objects[i].x - ball.r && ball.y > objects[i].y - ball.r && ball.x < ball.r + objects[i].x + objects[i].w && ball.y < ball.r + objects[i].y + objects[i].h){
alert('test');
gSy = (-1 * gSy);
}
}
代码检查圆的坐标加上或减去半径是否大于框的墙的顶部/左侧位置,小于框的墙的右/底位置。
球在一个点内位于物体内部,但我从未得到过警报。我已经尝试了所有我能想到的东西。希望我只是犯了一些我无法看到的愚蠢错误......
如果您想要弄乱我的代码或者不理解变量,那么这是一个jsfiddle:
答案 0 :(得分:0)
小问题:
你有四个对象。
最大的问题:
在jsfiddle中,碰撞测试中的所有比较似乎都是错误的方式:-)。 (这是奇怪的,因为这里的代码中的那些是正确的方法。)
随着这两个变化(我使球移动0.1 * gSy而不是gSy,并翻转所有比较运算符),检测到碰撞。