问题描述
我正在尝试编写我的 Pygame 游戏代码,以便玩家在不接触地板的任何时候摔倒。问题是编码它的方法是测试玩家 y 坐标是否低于 0,然后停止下降过程,但是 cuadratic 函数并不总是会精确到 y = 0,因为它每次移动更多像素帧,也许第一个小于 0 的值是 -10。然后玩家最终出现在屏幕下方。
我考虑过测试玩家的 y 坐标是否低于 0,然后将他传送到 y = 0,但这感觉是一个非常不优雅的解决方案,而且它还使玩家传送了一帧。
解决方法
“我想过测试玩家的 y 坐标是否低于 0,然后将他传送到 y = 0,但这感觉是一个非常不优雅的解决方案”
这是通常的方式。碰撞阻止玩家坠落。
“它还使玩家传送一帧。”
不,不是。您必须在碰撞检测之后和绘制之前“传送”播放器层。
您在每一帧中都进行一次碰撞检测。一旦检测到碰撞,您就知道玩家自上一帧以来在移动时在某个点碰到了物体。您不是计算玩家击中物体并停止移动的确切时间,而是通过物体限制玩家的位置。