Pygame平台碰撞检测不起作用

时间:2018-03-26 11:32:26

标签: python python-3.x pygame game-physics

我正在尝试对我的平台游戏实施碰撞检测。当我尝试运行游戏时,我只是通过平台,而不是在玩家击中它时停止。任何帮助或建议将不胜感激。 My full code can be found here

    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 

1 个答案:

答案 0 :(得分:1)

在逻辑和实施方面存在一些错误。

  • 在你的collision_detect中,你说你将堕落的状态改为假,但你永远不会这样做。此外,您在检查之前将fall设置为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

self.collision_detect(platform(0, 500, 800, 20))函数中使用do之类的内容尝试。

相关问题