Costumes und Animationen#

Jeder Actor kann ein oder mehrere Costumes haben. Diese Costumes bestehen aus einem oder mehreren Bildern, die für Animationen verwendet werden können.

:::{note} Wenn du in der API nach den Attributen und Methoden der Klasse Costume suchst, findest du sie unter der Klasse Appearance. Appearance ist die Oberklasse von Costume und Background, da beide viele Eigenschaften gemeinsam haben. :::


Ein Costume hinzufügen#

Du kannst einem Actor mit der folgenden Funktion ein neues Costume hinzufügen:

self.add_costume("images/image.jpg")

Wenn der Actor noch kein Costume hat, wird dieses automatisch als erstes gesetzt.


Weitere Bilder zu einem Costume hinzufügen#

Um ein Costume zu erweitern, kannst du die Methode add_image verwenden, um zusätzliche Bilder hinzuzufügen:

self.costume.add_image("images/image_2.jpg")

Alternativ kannst du auch eine Liste von Bildern gleichzeitig hinzufügen:

self.costume.add_images(["images/image_1.jpg", "images/image_2.jpg"])

Animationen#

2D-Animationen funktionieren wie ein Daumenkino: Durch schnelles Wechseln der Bilder entsteht der Eindruck, dass sich der Actor bewegt.

Costumes für den Actor

Um eine Animation zu erstellen, füge zuerst mehrere Bilder zu einem Costume hinzu (siehe oben). Anschließend kannst du die Animation mit der Methode animate() starten. Mit dem Parameter loop bestimmst du, ob sich die Animation wiederholen soll:

my_actor.costume.animate()
robo.costume.animate(loop=True)  # Infinite animation

Beispiel:#

import miniworlds 

world = miniworlds.World(80, 80)

robot = miniworlds.Actor()
robot.size = (80, 80)
robot.add_costume("images/drive1.png")
robot.costume.add_image("images/drive2.png")
robot.costume.animate()           # Start animation
robot.costume.loop = True         # Loop animation forever
world.run()

Zwischen Costumes wechseln#

Um zwischen verschiedenen Costumes zu wechseln, verwende die Methode switch_costume:

self.switch_costume()

Diese Methode wechselt zum nächsten Costume in der Liste. Optional kannst du eine Zahl übergeben, um direkt zu einem bestimmten Costume zu springen:

self.switch_costume(1)  # Switches to the first costume