我正在尝试编写我的Pygame游戏代码,这样玩家就可以在它不接触地板的任何时候倒下。问题是,编码它的方法是测试玩家y坐标是否低于0,然后停止下降过程,但三次函数并不总是会达到精确的y= 0,因为它每帧移动更多的像素,可能第一个低于0的值是-10。然后播放器就会出现在屏幕下。
我想过测试玩家的y坐标是否低于0,然后将他传送到y=0,但这感觉像是一个非常不优雅的解决方案,它也让玩家传送了一帧。
发布于 2021-05-30 22:00:14
“我想过测试玩家的y坐标是否低于0,然后将他传送到y= 0,但这感觉真的不是一个优雅的解决方案。”
这是通常的方式。碰撞使玩家不会跌倒。
“它还能让玩家传送一帧画面。”
不,它不会。你必须在碰撞检测之后,在你画它之前“传送”玩家plyer。
您在每一帧中执行一次碰撞检测。一旦检测到碰撞,您就知道自上一帧以来,玩家在移动时在某个点上撞到了对象。您可以通过对象来限制玩家的位置,而不是计算玩家击中对象并停止移动的确切时间。
https://stackoverflow.com/questions/67761738
复制相似问题