Bewegung#
Grundlagen#
Bevor wir tiefer in die Bewegungsfunktionen eintauchen, hier eine kurze Wiederholung der wichtigsten Konzepte:
Du kannst die Position und Ausrichtung eines Actors direkt mit
self.direction
,self.x
,self.y
undself.position
steuern.
Zusätzlich stellt Miniworlds spezielle Methoden bereit, mit denen sich ein Actor geradeaus oder in bestimmte Richtungen bewegen kann.
Die Funktion move()
#
Die Methode move()
bewegt deinen Actor in die Richtung, in die er aktuell schaut (basierend auf direction
). Wenn du die direction
vorher änderst, folgt die Bewegung automatisch der neuen Ausrichtung.
@player.register
def act(self):
self.direction = "right" # You can also use an angle, e.g., 90
self.move()
turn_left()
und turn_right()
#
Mit turn_left()
und turn_right()
kannst du den Actor um eine bestimmte Gradzahl nach links oder rechts drehen:
player.turn_left(degrees)
: Dreht den Actor umdegrees
Grad nach linksplayer.turn_right(degrees)
: Dreht den Actor umdegrees
Grad nach rechts
Beispiel:#
import miniworlds
world = miniworlds.World(400, 400)
world.add_background("images/grass.jpg")
player = miniworlds.Actor((100, 100))
player.add_costume("images/player.png")
@player.register
def act(self):
self.move()
@player.register
def on_key_down_a(self):
self.turn_left(30)
@player.register
def on_key_down_d(self):
self.turn_right(30)
world.run()
move_in_direction()
#
Als Alternative zur Standardbewegung kannst du move_in_direction()
verwenden, um den Actor durch Angabe eines Winkels in eine beliebige Richtung zu bewegen.
Beispiel: Diagonale Bewegung#
import miniworlds
world = miniworlds.World()
world.add_background("images/grass.jpg")
player = miniworlds.Actor((100, 100))
player.add_costume("images/player.png")
@player.register
def act(self):
self.move_in_direction(45)
world.run()
Beispiel: Bewegung in Richtung des Mauszeigers#
Das folgende Beispiel zeigt, wie du mit move_in_direction()
den Actor dem Mauszeiger folgen lassen kannst.
import miniworlds
world = miniworlds.World(400, 400)
world.add_background("images/grass.jpg")
player = miniworlds.Actor()
player.add_costume("images/player.png")
player.orientation = -90
@player.register
def act(self):
self.move_in_direction(self.world.get_mouse_position())
world.run()