[英]Pygame platformer collision detection not working
我正在尝试对我的平台游戏进行碰撞检测。 当我尝试运行游戏时,我只是掉在平台上,而不是在玩家点击游戏时停下来。 任何帮助或建议,将不胜感激。 我的完整代码可以在这里找到
def collision_detect(self,x1,y1,platform):
#Stops the player from falling once they hit the platform by setting falling to false
if self.x > platform.x and self.x < platform.x2:
if self.y == platform.y:
self.yVel += 0
在逻辑和实现方面存在一些错误。
在您的collision_detect
您说自己将下降状态更改为false,但从未这样做。 另外,您在检查之前将其设置为true。 但是首先请看我的其他观点。
玩家不应处于“掉落”或“不掉落”状态。 重力总是在那,所以玩家总是在跌倒。 如果有一个平台可以阻止它,那么速度会降为0,仅此而已。 就像您实际上要摔倒一样,但是地板会阻止您。
您不应该检查self.y == platform.y
,因为如果将y坐标增加2或3,则可能会“跳过”确切的坐标,因此您真正想要的是self.y >= platform.y
。
您可以完全删除gravity
方法,而仅使用collision_detect
方法。
像这样:
def collision_detect(self, platform):
if self.x > platform.x and self.x < platform.x2:
if self.y >= platform.y:
self.yVel = 0
else:
self.yVel = 5
在do
函数中尝试使用诸如self.collision_detect(platform(0, 500, 800, 20))
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.