我正在制作2D游戏。我在游戏中实现了一个物理引擎,所以当玩家跳过他的弧线时,会根据游戏中的速度和重力来确定路径。当玩家下降时,它的距离会越来越大,因为它有加速度。
如果新位置将玩家放在对象的另一侧,我怎么知道玩家是否与路径中的某些东西发生碰撞?
我可以使用循环测试球员路径上的每个点。这是唯一的方法吗?是否有更优雅的算法或pygame解决方案?
答案 0 :(得分:1)
一种解决方案是在速度矢量的对面添加一条看不见的尾巴,足以补偿帧之间的大距离。
答案 1 :(得分:1)
Pygame本身无法帮助你,我担心。它有一些api可以帮助你确定矩形是否相交,但正如你所发现的,如果一个实体行进得足够快,它们可能在一次更新时位于地面的一侧,而在下一次更新时,另一次更新是明确的侧。这有时被称为“隧道”。
解决此问题的最简单方法是:不要让您的实体足够快地穿越地面(或其他实体)。您可以将“终端速度”应用于下降实体,或者增加碰撞检测的频率。
有更复杂的算法可以解决这个问题,通常称为“连续碰撞算法”,但这些算法更复杂。这些算法在网上提供了大量的信息,所以如果你愿意,我会把这个留给你研究。