Python 玩家和拦网之间的Pygame碰撞

Python 玩家和拦网之间的Pygame碰撞,python,pygame,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

我正在做一个游戏,我想检查玩家和拦网之间的碰撞,如果必要的话推回玩家

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)
def碰撞(自身,玩家):
如果self.solid:
如果self.rect.collide rect(player.rect):
如果self.rect.bottom-1=player.rect.bottom和player.pos==“down”:
player.down=0
游戏者直移ip(0,-1)
如果self.rect.left+1=player.rect.left和player.pos==“left”:
player.left=0
玩家直移ip(1,0)
但由于某种原因,它不起作用。有人能帮我吗? 提前感谢

尝试更换

def Collide(player,self):


如果这是某种
障碍的方法
类。只是猜测……:)

如果希望对象被向后推,那么最简单的方法就是稍微修改update()函数

每次移动时,将当前位置记录为“self.\u oldposition”(或类似内容) 碰撞时,需要将当前位置设置为旧位置(self.\u oldposition)


这将解决大多数冲突问题。

这是一个类方法,而您将
self
放在了错误的位置,还是您刚刚调用了第二个参数
self
?顺便说一句,Python中的方法通常是小写的。谢谢,我已经修复了它。是的,这是类方法。我已经解决了这个问题,但这不是我要解决的问题:)
def collide(self, player):