玩家和街区之间的Pygame碰撞

时间:2012-03-28 14:08:14

标签: python pygame

我正在制作游戏,我想检查玩家和街区之间的碰撞,如果需要,可以推回玩家。

def collide(self,player):
    if self.solid:
        if self.rect.colliderect(player.rect):
            if self.rect.bottom-1 <= player.rect.top and player.pos == 'up':
                player.up = 0
                player.rect.move(0,1)
            if self.rect.top+1 >= player.rect.bottom and player.pos == 'down':
                player.down = 0
                player.rect.move_ip(0,-1)
            if self.rect.left+1 <= player.rect.right and player.pos == 'right':
                player.right = 0
                player.rect.move_ip(-1,0)
            if self.rect.right-1 >= player.rect.left and player.pos == 'left':
                player.left = 0
                player.rect.move_ip(1,0)

但由于某种原因它不起作用。有人能帮我吗? 提前致谢

2 个答案:

答案 0 :(得分:1)

尝试替换

def Collide(player,self):

通过

def collide(self, player):

如果这是某种Obstacle类的方法。只是猜测...... :)

答案 1 :(得分:1)

如果你想要推回你的对象,那么最简单的方法就是稍微修改你的update()函数。

每次移动时,将当前位置记录为“self._oldposition”(或类似的东西) 碰撞时,您需要将当前位置设置为旧位置(self._oldposition)

这将解决您的大多数碰撞问题。