Я пытаюсь нарисовать свои спрайты в месте, где у меня есть их верхние левые координаты x и y.
Я знаю, что центр является атрибутом, который можно использовать
class walls(pygame.sprite.Sprite):
def __init__(self, x, y, width, height):
super().__init__()
self.width = width
self.height = height
self.x = x
self.y = y
self.image = pygame.Surface([width,height])
self.image.fill(black)
self.rect = self.image.get_rect(center=(self.x, self.y))
Я не хочу координаты центра, а хотел бы нарисовать это изображение по его верхним левым координатам x и y. Как? Какие другие команды я могу использовать в функции self.image.get_rect()?
Я гуглил self.image.get_rect(), где ничего не мог найти, но теперь я понял, что self.image - это то, над чем я выполняю эту функцию. Я погуглил get_rect() и нашел команду topleft. Извините за неприятности!
.image
атрибут pygame.sprite.Sprite
имеет pygame.Surface
объект.
Смотрите документацию pygame.Surface
:
Вы можете передать значения аргумента ключевого слова в эту функцию. [...] Примером может быть
mysurf.get_rect(center=(100,100))
для создания прямоугольника для поверхности, центрированной в данной позиции.
Это означает, что в эту функцию могут быть переданы любые атрибуты ключевых слов, которые могут быть установлены в pygame.Rect
например
self.rect = self.image.get_rect(topleft=(100, 100))
генерирует прямоугольник с верхней левой координатой (100, 100) и шириной и высотой self.image
.