2012-07-10 108 views
0

我正在创建一个2D游戏。我在游戏中实现了一个物理引擎,所以当玩家跳过他的弧线时,会遵循给定速度和游戏引力的路径。当玩家下降时,由于它有加速度,下降的距离将继续变得越来越大。加速时Pygame碰撞检测

如果新位置将玩家放在物体的另一侧,我如何知道玩家是否与其路径中的物体发生碰撞?

我可以使用循环并测试玩家路径上的每个点。这是唯一的方法吗?有没有更优雅的算法或pygame解决方案?

回答

1

一种解决方案是添加一个与速度矢量相反的不可见尾部,足够长以补偿帧之间行进的大距离。

1

Pygame本身不能帮助你我害怕。它有一些帮助你确定矩形是否相交的apis,但是正如你发现的那样,如果一个实体的行进速度足够快,他们可以在一次更新时在地面的一侧,在下一次更新时在另一侧更清晰侧。这有时被称为“隧道效应”。

解决此问题的最简单方法是:不要让您的实体足够快地移动通过地面(或其他实体)。您可以将“终极速度”应用于您的下降实体,或者增加碰撞检测的频率。

有更复杂的算法来解决这个问题,通常称为“连续碰撞算法”,但这些更复杂。这些算法可以在线获取大量信息,因此如果您愿意,我会留给您进行研究。