Почему мой спрайт не двигается при нажатии клавиши? - PullRequest
2 голосов
/ 20 января 2020

Я не знаю почему, но когда я нажимаю клавишу вверх, ошибки не возникает, но с моим спрайтом ничего не происходит. Я пытался просматривать документы Pygame, но что бы я ни делал, ничего не получается.

def __init__(self):
    pygame.sprite.Sprite.__init__(self)
    self.char = os.path.join(player_folder, "p_stand.png")
    self.walkcount = 0
    self.jumping = False
    self.jumpCount = 0
    self.image = pygame.image.load(self.char).convert()
    self.image.set_colorkey((0, 0, 0))
    self.rect = self.image.get_rect()
    self.rect.right = 0
    self.rect.bottom = int(height - 70)

def update(self):
    self.keys = pygame.key.get_pressed()
    if self.keys[pygame.K_UP] and self.jumping == False:
        self.jumping = True

    if self.jumping:
        if self.jumpCount <= 5:
            self.rect.move(0, 1)
            self.jumpCount += 1
        elif self.jumpCount > 5 and self.jumpCount < 10:
            self.rect.move(0, -1)
            self.jumpCount += 1
        else:
            self.jumpCount = 0
            self.jumping = False

1 Ответ

1 голос
/ 20 января 2020

pygame.Rect.move не изменяет атрибуты позиции экземпляра объекта. Метод создает новое pygame.Rect с новым местоположением и возвращает его.
Необходимо присвоить возвращаемое значение атрибуту. Например:

self.rect.move(0, -1)

self.rect = self.rect.move(0, -1)

В Pygame направление оси Y направлено вниз. Если вы хотите подпрыгнуть, вам нужно move(0, -1):

def update(self):
    self.keys = pygame.key.get_pressed()
    if self.keys[pygame.K_UP] and self.jumping == False:
        self.jumping = True

    if self.jumping:
        if self.jumpCount <= 5:
            self.rect = self.rect.move(0, -1)
            self.jumpCount += 1
        elif self.jumpCount > 5 and self.jumpCount < 10:
            self.rect = self.rect.move(0, 1)
            self.jumpCount += 1
        else:
            self.jumpCount = 0
            self.jumping = False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...