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.yundself.positionsteuern.
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 umdegreesGrad nach linksplayer.turn_right(degrees): Dreht den Actor umdegreesGrad 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.mouse.get_position())
world.run()