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
}