我正在實施一個簡單的基於磁貼的遊戲,其中包含基於時間的移動。基於時間的移動和碰撞檢測問題
我的代碼,負責運動和碰撞檢測是
private function onEnterFrame(event:Event):void
{
if (waiting && game.movingBreakers <= 0)
endLevel();
var interval:int = getTimer() - oldTime;
oldTime += interval;
var totalBreakers:uint = breakers.length;
if (totalBreakers)
{
for each (var breaker:Breaker in breakers)
{
if (!breaker.moving)
continue;
switch (breaker.direction)
{
case TOP:
breaker.y -= SPEED * interval;
break;
case BOTTOM:
breaker.y += SPEED * interval;
break;
case LEFT:
breaker.x -= SPEED * interval;
break;
case RIGHT:
breaker.x += SPEED * interval;
break;
}
checkCollisions(breaker);
}
}
}
我最近面臨的是,對於一些無關緊要的原因,與遊戲,有我的電腦上了沉重的CPU負載問題。結果,遊戲畫面在晚些時候被更新,但是精靈(破壞者)基於時間在他們的移動中處於正確的位置。然而,由於最後兩幀之間的時間差異較大,精靈在另一個位置移動,所以一些碰撞失敗了。因此,我的問題是某人在基於時間的運動中如何解決碰撞檢測問題?