Не работает перемещение персонажа на 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()

Ответы (0 шт):