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):