0

我正在做一个带有简单碰撞检测的炸弹人克隆。从理论上讲,如果游戏打嗝一秒钟,那一秒钟就会作为增量时间传入,如果移动到位置是有效的,碰撞检测甚至可能看不到挡在路上的块。这个问题的解决方案是固定的时间步长,还是有另一种算法或处理与矩形的简单碰撞的方法,我错过了?

4

1 回答 1

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
}
于 2013-10-24T14:44:31.313 回答