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

ParameterTypBeschreibung
namestrOptionaler Name für das Entity. Nützlich zum Debuggen oder Nachschlagen.
spriteSpriteSprite-Komponente anhängen. Muss eine Sprite-Instanz sein.
xfloatAnfangs-X-Position in der Welt. Standard: 0.0
yfloatAnfangs-Y-Position in der Welt. Standard: 0.0
parentEntityEltern-Entity. Aktiviert hierarchische Transforms.
layerintRender-Ebene. Standard ist die Ebene des Elternteils oder die Standard-Welt-Ebene.
soundSoundSound-Komponente anhängen.
musicMusicMusic-Komponente anhängen (gestreamt/dekodiert).
mapGridMapInfoGridMap-Komponente aus Map-Info erstellen.
bodyGridBodyGridBody-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:

  1. Explizites layer-Argument
  2. Ebene des Elternteils (wenn parent gesetzt ist)
  3. 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:

  • sprite kein Sprite ist
  • parent kein Entity ist
  • 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