У меня есть следующий класс:Как переместить спрайт в Pygame
class Enemy(pygame.sprite.Sprite):
def __init__(self):
pygame.init()
pygame.sprite.Sprite.__init__(self)
# Basic variables
self.speed = [2,2]
# Sets up the image and Rect
self.bitmap = pygame.image.load("badguy.png")
self.bitmap.set_colorkey((0,0,0))
self.shipRect = self.bitmap.get_rect()
self.shipRect.topleft = [100,200]
def move(self, x, y):
self.shipRect.center = (x,y)
def render(self):
screen.blit(self.bitmap, (self.shipRect))
Теперь я хочу, чтобы он двигаться всякий раз, когда я ударил кнопку со стрелкой. Тем не менее, есть большая проблема с моей функцией перемещения. Он просто перемещает центр корабля в координаты, подаваемые в функцию. В случае, если вы не видите проблему, то, что я пытаюсь назвать это так:
if event.key == K_RIGHT:
enemy.x += 5
if event.key == K_LEFT:
enemy.move(-5,0)
if event.key == K_UP:
enemy.move(0,5)
if event.key == K_DOWN:
enemy.move(0,-5)
Я ожидал, что это пошевелить пять в направлении ключа, который я попал. Тем не менее, он стреляет в верхнюю левую часть экрана, потому что я делаю центр равным нулю на одной оси и + - 5 на другой оси.
Какой метод можно использовать, чтобы заставить его двигаться в правильном направлении и все же дать мне возможность поместить спрайты в исходное положение на экране, который я выбираю.
Любая помощь очень ценится.
Для записки, назначение должно быть 'self.shipRect.centerx + = x' и' self.shipRect.centery + = y'. Самым центром является кортеж, который нельзя индексировать таким образом. – Linell