0
我有一個對象的數組都是'矩形'。我也有一個圈子是對象。我使用的重力的公式爲:碰撞檢測不檢測
newYPos = oldYPos + prevFallingSpeed +重力
基本上,我加入重力的速率像素圈中的前一幀「下降」的數目,然後加入該到最後一幀中的圓的位置。
我檢測所述球的任何部分的任何使用此代碼的對象的內部:
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如果你是爲我的代碼搞亂或不理解的變量:
對象都是通過對象的半徑生長的。我最終會這樣做,以便根據球的方向而不是位置來檢測。你能否將鏈接發佈到你的代碼版本上,然後我會接受 – maxhud 2012-07-09 01:38:51
如果球的移動量超過了單個框架的範圍,球的半徑增長是不夠的。修改後的代碼位於http://jsfiddle.net/JGKx5/1/,儘管沒有比上面描述的更多的mod。 – 2012-07-09 02:24:02