繁体   English   中英

Pygame Platformer碰撞检测不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM