прямоугольник перемещения pygame остается наверху, но move_ip перемещается - PullRequest
0 голосов
/ 25 мая 2020

когда я меняю move_ip () на move () в pygame, прямоугольник остается в верхнем левом углу
ошибок нет
он просто открывает окно pygame с прямоугольником вверху слева
изображение

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((32, 32))
        self.image.fill(charcolor)
        self.rect = self.image.get_rect()  # Get rect of some size as 'image'.
        self.rect.move(50,400)
        self.velocity = [10, 0]

        def update():
            self.rect.move_ip(*self.velocity)

1 Ответ

1 голос
/ 25 мая 2020

В то время как move_ip() изменяет положение самого объекта, move возвращает новый объект с другой позицией, но не изменяет сам объект.
Следовательно, self.rect.move(50,400) вообще ничего не делает, потому что возвращаемое значение никуда не идет.

Оператор

self.rect.move_ip(50,400)

может быть заменен на

self.rect = self.rect.move(50,400)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...