Не работает перемещение персонажа на Pygame
Есть такой кусок кода, который должен перемещать игрока на определенные координаты:
def win(self):
self.teleporting(55, 55)
def teleporting(self, goX, goY):
self.rect.x = goX
self.rect.y = goY
Потом вызываю его в функции:
def collidefg(self, flegs):
for f in flegs:
if sprite.collide_rect(self, f):
self.win()
f.kill()
flegs.clear()
Подскажите почему не работает?
class Player(sprite.Sprite):
b = 1
def __init__(self, x, y):
self.yvel = 0 # скорость вертикального перемещения
self.onGround = False
self.jetpack = False
sprite.Sprite.__init__(self)
self.xvel = 0
self.startX = x
self.startY = y
self.image = Surface((WIDTH, HEIGHT))
self.image = pygame.image.load("player/r2.png")
self.rect = Rect(x, y, WIDTH, HEIGHT)
self.JUMP_POWER = 20
self.GRAVITY = 1
def update(self, left, right, up, platforms, jetpacks,flegs):
if up:
if self.onGround:
self.yvel = -self.JUMP_POWER
if left:
self.xvel = -MOVE_SPEED # Лево = x- n
if right:
self.xvel = MOVE_SPEED # Право
if not (left or right):
self.xvel = 0
if not self.onGround:
self.yvel += self.GRAVITY
if self.jetpack==True:
self.image=pygame.image.load("player/r3.png")
self.GRAVITY= 0.1
self.JUMP_POWER = 15
self.image = pygame.image.load("player/r2.png")
self.GRAVITY = 1
self.JUMP_POWER = 20
self.jetpack==False
self.onGround = False
self.rect.y += self.yvel
self.collide(0, self.yvel, platforms)
self.collidejet(0, self.yvel, jetpacks)
self.collidefg(0, self.yvel, flegs)
self.rect.x += self.xvel
self.collide(self.xvel, 0, platforms)
self.collidejet(self.xvel, 0, jetpacks)
self.collidejet(self.xvel, 0, flegs)
def win(self):
self.teleporting(55, 55)
def teleporting(self, goX, goY):
self. rect.x= goX
self.rect.y = goY
def collide(self, xvel, yvel, platforms):
for p in platforms:
if sprite.collide_rect(self, p):
if xvel > 0: # вправо
self.rect.right = p.rect.left
if xvel < 0: # влево
self.rect.left = p.rect.right
if yvel > 0: # вниз бубухнулся
self.rect.bottom = p.rect.top
self.onGround = True
self.yvel = 0
if yvel < 0:
self.rect.top = p.rect.bottom
self.yvel = 0
def collidejet(self, xvel, yvel, jetpacks):
for j in jetpacks:
if sprite.collide_rect(self, j):
j.kill()
jetpacks.clear()
if xvel > 0:
self.rect.right = j.rect.left
self.jetpack = True
if xvel < 0:
self.rect.left = j.rect.right
self.jetpack = True
if yvel > 0:
self.rect.bottom = j.rect.top
self.jetpack = True
if yvel < 0:
self.rect.top = j.rect.bottom
self.jetpack = True
def collidefg(self, xvel, yvel, flegs):
for f in flegs:
if sprite.collide_rect(self, f):
self.win()
f.kill()
flegs.clear()