Pygame Spieler bewegen?
Ich habe mit Pygame, wie man es halt tut, ein Fenster erstellt und ein Quadrat, welches man mit w, a, s, d bewegen kann. Problem ist, ich kann die Tasten nicht gedrückt halten, sondern ich muss immer wieder die Taste neu drücken, dami siech das Quadrat (in meinem Falle um 4 Pixel) bewegt. Was muss ich tun, damit ich die Tasten gedrückt halten kann und das Quadrat sich durchgehend bewegt?
1 Antwort
Was muss ich tun, damit ich die Tasten gedrückt halten kann und das Quadrat sich durchgehend bewegt?
Schwer zu sagen, ohne deinen Code zu sehen - wobei ich auch keine Ahnung von Pygame habe. Aber im Grunde brauchst du so ein Konstrukt:
def moveForward:
while True:
pressed = pygame.key.get_pressed()
if pressed[pygame.K_w]:
#Hier dein Code zum Vorwärts bewegen
else:
break
Lässt sich eventuell verkürzen zu:
def moveForward:
while pygame.key.get_pressed()[pygame.K_w]:
#Hier dein Code zum Vorwärts bewegen
Musst du mal ausprobieren.
Ansonsten guck mal hier:
Naja, das event wird vermutlich ja nur einmalig aufgerufen, entsprechend wird es nur einmalig bewegt.
Wenn es sich mit einer While-Schleife aufhängt, dann würde ich mal gucken, ob ich nicht einen Timer einrichte, der dann alle 100 ms fragt, ob die Taste noch gedrückt ist und dann erneut die Bewegung ausführt.
Ich werde mir da mal was überlegen.
Deine Lösung war richtig. Mich hat nur die Definition verwirrt.
pressed = pygame.key.get_pressed()
if pressed[pygame.K_w]:
y = y - 4
Hiermit funktioniert es jetzt.
Mit while Schleifen hatte ich es auch schon ausprobiert, aber da hängt sich das Programm dann auf. Aber ich probiers mal.
Mein Code sieht so aus: