Ich habe die folgende Klasse:So verschieben Sie ein Sprite in 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))
Jetzt will ich es haben zu bewegen, wenn ich einen Pfeil-Taste drücken. Allerdings gibt es ein großes Problem mit meiner Bewegungsfunktion. Es bewegt einfach die Mitte des Schiffes zu den Koordinaten, die in die Funktion eingegeben werden. Falls Sie das Problem nicht sehen, es ist, dass ich so nennen es ich versucht:
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)
erwartete ich es meine fünf in Richtung der Schlüssel zu bewegen, die ich getroffen. Es schießt jedoch nach oben links vom Bildschirm, weil ich den Mittelpunkt auf Null auf einer Achse und + - 5 auf der anderen Achse setze.
Welche Methode kann verwendet werden, um es in die richtige Richtung zu bewegen und mir immer noch die Möglichkeit zu geben, die Sprites an einer Startposition auf dem Bildschirm, den ich wähle, zu setzen.
Jede Hilfe wird sehr geschätzt.
Für Notiz, muss die Zuordnung 'self.shipRect.centerx + = x' und' self.shipRect.centery + = y' sein. Das Zentrum selbst ist ein Tupel, das nicht so indiziert werden kann. – Linell