【发布时间】:2014-01-06 13:50:40
【问题描述】:
我正在实现一个简单的基于图块的游戏,其中包含基于时间的移动。
我负责移动和碰撞检测的代码是
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 负载过重。结果,游戏的帧在稍后更新,但精灵(破坏者)在正确的位置,因为它们基于时间移动。然而,由于最后两帧之间的时间差较大,精灵移动到了更远的位置,一些碰撞失败了。因此,我的问题是有人如何在基于时间的运动中解决这个碰撞检测问题?
【问题讨论】:
标签: actionscript-3 collision-detection 2d-games