pyxen.world.spawn()
Erstelle ein neues Entity in der Welt und hänge optional Komponenten an (Sprite, Sound, Music, Map, Physik-Body usw.).
Dies ist der primäre Weg, Objekte zu deiner Szene hinzuzufügen.
Syntax
entity = pyxen.world.spawn(
*,
name=None,
sprite=None,
x=None,
y=None,
parent=None,
layer=None,
sound=None,
music=None,
map=None,
body=None
)
Alle Argumente sind Keyword-only.
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
name | str | Optionaler Name für das Entity. Nützlich zum Debuggen oder Nachschlagen. |
sprite | Sprite | Sprite-Komponente anhängen. Muss eine Sprite-Instanz sein. |
x | float | Anfangs-X-Position in der Welt. Standard: 0.0 |
y | float | Anfangs-Y-Position in der Welt. Standard: 0.0 |
parent | Entity | Eltern-Entity. Aktiviert hierarchische Transforms. |
layer | int | Render-Ebene. Standard ist die Ebene des Elternteils oder die Standard-Welt-Ebene. |
sound | Sound | Sound-Komponente anhängen. |
music | Music | Music-Komponente anhängen (gestreamt/dekodiert). |
map | GridMapInfo | GridMap-Komponente aus Map-Info erstellen. |
body | GridBody | GridBody-Physikkomponente anhängen. |
Rückgabe
Entity
Eine neu erstellte Entity-Instanz.
Transform-Verhalten
Jedes gespawnte Entity erhält automatisch einen Transform:
x = 0.0
y = 0.0
scale_x = 1.0
scale_y = 1.0
rotation = 0.0
Aktuell sind nur x und y beim Spawn konfigurierbar.
Ebenen-Auflösung
Die Ebene wird in dieser Reihenfolge bestimmt:
- Explizites
layer-Argument - Ebene des Elternteils (wenn
parentgesetzt ist) - Standard-Welt-Ebene
Beispiele
Ein einfaches Entity erzeugen
player = pyxen.world.spawn(x=32, y=16)
Mit einem Sprite erzeugen
player = pyxen.world.spawn(
name="Player",
sprite=assets.player_sprite,
x=32,
y=16
)
Als Kind erzeugen
weapon = pyxen.world.spawn(
sprite=assets.sword,
parent=player,
x=8,
y=0
)
Kind-Entities erben Transform-Hierarchie und Ebene (sofern nicht überschrieben).
Mit Sound erzeugen
explosion = pyxen.world.spawn(
sprite=assets.explosion,
sound=assets.explosion_sfx,
x=64,
y=32
)
Eine Sound-Komponente wird angehängt und ist bereit zur Wiedergabe.
Mit Music erzeugen
music_entity = pyxen.world.spawn(
music=assets.background_theme
)
Music verwendet einen internen Dekoder und wird an das Entity angehängt.
Eine Grid Map erzeugen
level = pyxen.world.spawn(
map=assets.level1_map
)
Erstellt eine GridMap-Komponente, initialisiert aus der bereitgestellten GridMapInfo.
Mit einem Physik-Body erzeugen
player = pyxen.world.spawn(
sprite=assets.player,
body=GridBody.dynamic(),
x=10,
y=5
)
Hängt eine GridBody-Komponente für rasterbasierte Kollision an.
Komponenten-Übersicht
Je nach angegebenen Argumenten kann das Entity erhalten:
- Transform (immer)
- Name (optional)
- Sprite
- Sound
- Music
- GridMap
- GridBody
- Eltern-Beziehung
- Ebenen-Zuweisung
Typfehler
Die Funktion löst einen TypeError aus, wenn:
spritekeinSpriteistparentkeinEntityist- Komponententypen nicht den erwarteten Klassen entsprechen
Beispiel:
pyxen.world.spawn(sprite="not a sprite")
# TypeError: spawn: sprite must be a Sprite
Hinweise
- Entities sind leichtgewichtig.
- Komponenten sind optional.
- Das Entity wird sofort in der Welt registriert.
- Hierarchie und Ebenen werden beim Spawn aufgelöst.
Design-Philosophie
spawn() ist bewusst komponentengetrieben.
Du erstellst keine Unterklassen. Du komponierst Verhalten durch das Anhängen von Komponenten.
Das hält Pyxen:
- Vorhersagbar
- Datenorientiert
- Anfängerfreundlich
- ECS-konsistent