Pygame加速时的碰撞检测

Pygame加速时的碰撞检测,pygame,Pygame,我正在创建一个2D游戏。我在游戏中实现了一个物理引擎,所以当玩家在游戏中跳跃时,他的弧线会跟随给定速度和重力的路径。当玩家下落时,下落的距离会越来越大,因为它有加速度 如果新位置将玩家放置在对象的另一侧,我如何知道玩家是否与其路径中的某物发生碰撞 我可以使用一个循环测试玩家路径上的每一点。这是唯一的办法吗?有更优雅的算法或pygame解决方案吗?一种解决方案是在速度向量的对面添加一条不可见的尾巴,长度足以补偿帧间的长距离移动。我担心pygame本身无法帮助您。它有一些API可以帮助您确定矩形是否

我正在创建一个2D游戏。我在游戏中实现了一个物理引擎,所以当玩家在游戏中跳跃时,他的弧线会跟随给定速度和重力的路径。当玩家下落时,下落的距离会越来越大,因为它有加速度

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


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

一种解决方案是在速度向量的对面添加一条不可见的尾巴,长度足以补偿帧间的长距离移动。

我担心pygame本身无法帮助您。它有一些API可以帮助您确定矩形是否相交,但正如您所发现的,如果实体移动速度足够快,则在一次更新时,它们可能位于地面的一侧,而在下一次更新时,则在另一侧保持清晰。这有时被称为“隧道”

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

有更复杂的算法来解决这个问题,通常称为“连续碰撞算法”,但这些算法更复杂。在线上有很多关于这些算法的信息,所以如果你愿意,我将把这些留给你去研究