2013-10-24 39 views
0

我正在做一个炸弹人克隆与简单的碰撞检测。从理论上讲,如果游戏打嗝一秒钟,那么秒钟会作为德尔塔时间传入,如果移动到位置有效,碰撞检测甚至不会看到阻挡。是一个固定的时间步骤解决这个问题,还是有另一种算法或方式与矩形的简单碰撞处理,我失踪了?如何在没有固定时间步的情况下进行碰撞检测?

回答

0

对于一个简单的2D游戏,我认为固定的时间步将是最简单的答案。如果移动在处理过程中继续进行,玩家将无法在需要时采取回避行动,并且会感到沮丧。

但是,您可以根据对象的速度修改对象的边界矩形,然后在检测到冲突时再细分时间间隔。

例如,如果对象具有的{y_top,y_bottom,x_left,x_right}边界矩形,并移动以{delta_x,delta_y}每秒的速度,然后在时间t,移动的距离是{delta_x * t, delta_y * t},以及碰撞检测一包围矩形可如下计算:

if (delta_x < 0) { 
    x_left = x_left + delta_x * t 
} else { 
    x_right = x_right + delta_x * t 
} 

if (delta_y < 0) { 
    y_bottom = y_bottom + delta_y * t 
} else { 
    y_top = y_top + delta_y * t 
}