pyxen.world.spawn()

Crea un nuevo Entity en el mundo y opcionalmente le adjunta componentes (sprite, sonido, música, mapa, cuerpo físico, etc.).

Esta es la forma principal de añadir objetos a tu escena.


Sintaxis

entity = pyxen.world.spawn(
    *,
    name=None,
    sprite=None,
    x=None,
    y=None,
    parent=None,
    layer=None,
    sound=None,
    music=None,
    map=None,
    body=None
)

Todos los argumentos son solo por nombre.


Parámetros

ParámetroTipoDescripción
namestrNombre opcional para la entidad. Útil para depuración o búsquedas.
spriteSpriteAdjunta un componente sprite. Debe ser una instancia de Sprite.
xfloatPosición X inicial en el mundo. Por defecto: 0.0
yfloatPosición Y inicial en el mundo. Por defecto: 0.0
parentEntityEntidad padre. Habilita transformaciones jerárquicas.
layerintCapa de renderizado. Por defecto la capa del padre o la capa por defecto del mundo.
soundSoundAdjunta un componente de sonido.
musicMusicAdjunta un componente de música (streaming/decodificado).
mapGridMapInfoCrea un componente GridMap a partir de la información del mapa.
bodyGridBodyAdjunta un componente físico GridBody.

Devuelve

Entity

Una instancia de entidad recién creada.


Comportamiento del Transform

Cada entidad creada recibe automáticamente un Transform:

x = 0.0
y = 0.0
scale_x = 1.0
scale_y = 1.0
rotation = 0.0

Actualmente, solo x e y son configurables al momento de la creación.


Resolución de capa

La capa se determina en este orden:

  1. Argumento layer explícito
  2. Capa del padre (si se establece parent)
  3. Capa por defecto del mundo

Ejemplos


Crear una entidad básica

player = pyxen.world.spawn(x=32, y=16)

Crear con un Sprite

player = pyxen.world.spawn(
    name="Player",
    sprite=assets.player_sprite,
    x=32,
    y=16
)

Crear como hijo

weapon = pyxen.world.spawn(
    sprite=assets.sword,
    parent=player,
    x=8,
    y=0
)

Las entidades hijas heredan la jerarquía de transformación y la capa (a menos que se sobrescriba).


Crear con Sound

explosion = pyxen.world.spawn(
    sprite=assets.explosion,
    sound=assets.explosion_sfx,
    x=64,
    y=32
)

Un componente Sound se adjunta y está listo para reproducción.


Crear con Music

music_entity = pyxen.world.spawn(
    music=assets.background_theme
)

Music usa un decodificador interno y se adjunta a la entidad.


Crear un Grid Map

level = pyxen.world.spawn(
    map=assets.level1_map
)

Crea un componente GridMap inicializado a partir del GridMapInfo proporcionado.


Crear con un cuerpo físico

player = pyxen.world.spawn(
    sprite=assets.player,
    body=GridBody.dynamic(),
    x=10,
    y=5
)

Adjunta un componente GridBody para colisión basada en cuadrícula.


Resumen de componentes

Dependiendo de los argumentos proporcionados, la entidad puede recibir:

  • Transform (siempre)
  • Name (opcional)
  • Sprite
  • Sound
  • Music
  • GridMap
  • GridBody
  • Relación de padre
  • Asignación de capa

Errores de tipo

La función producirá un TypeError si:

  • sprite no es un Sprite
  • parent no es un Entity
  • Los tipos de componentes no coinciden con las clases esperadas

Ejemplo:

pyxen.world.spawn(sprite="not a sprite")
# TypeError: spawn: sprite must be a Sprite

Notas

  • Las entidades son ligeras.
  • Los componentes son opcionales.
  • La entidad se registra inmediatamente en el mundo.
  • La jerarquía y las capas se resuelven en el momento de la creación.

Filosofía de diseño

spawn() es intencionalmente orientado a componentes.

No creas subclases. Compones comportamiento adjuntando componentes.

Esto mantiene Pyxen:

  • Predecible
  • Orientado a datos
  • Amigable para principiantes
  • Consistente con ECS