Componentes
Las escenas de Polygon Engine se construyen a partir de GameObjects. Cada GameObject tiene un Transform, y los componentes opcionales agregan renderización, jugabilidad, colisión, audio, cámara, iluminación, animación y comportamiento de scripting.
El modelo de componentes es intencionalmente pequeño. Cada componente debe serializarse correctamente en el JSON de la escena, validar en el editor y organizar de manera predecible en el tiempo de ejecución de PS1.
Familias de componentes
| Familia | Componentes |
|---|---|
| Núcleo | Transform, Mesh Renderer, Camera, Lua Behaviour |
| Colisión y movimiento | Collider, Character Controller |
| Pila de jugadores nativos | Player Input, Player Motor, First Person Controller, Third Person Controller, Camera Rig |
| Interacción | Interaction Ray, Interactable, Spawn Point |
| Presentación | Light, Transform Animator, Animator, Animator de jugador, Audio Source, Particle System |
| Mundo | Room, Portal, superficie NavMesh, Navigation Modifier, agente NavMesh |
| UI | Autor UI Canvases, Texto, Botón, Imagen, Panel, ProgressBar, fuentes de mapa de bits |
Los elementos de la interfaz de usuario se almacenan en los lienzos de la interfaz de usuario de la escena, no como componentes GameObject. Véase UI Canvas.
Transform
Presente en cada GameObject.
| Propiedad | Descripción |
|---|---|
| Position | Posición local relativa al padre |
| Rotation | Rotación local de Euler en grados |
| Scale | Escala local |
| Parent | Opcional padre GameObject |
Las transformaciones de niño se resuelven en transformaciones de mundo antes de las consultas de renderizado, colisión, cámara y script.
Mesh Renderer
Dibuja un primitivo incorporado o un recurso de malla importado.
| Propiedad | Descripción |
|---|---|
| Mesh Type | builtin o asset |
| Mesh | Nombre primitivo incorporado o GUID de malla importada |
| Material Type | Material o recurso material incorporado |
| Material | Nombre o material incorporado GUID |
| Primitive Tessellation | Controles de segmento para primitivas integradas compatibles |
| Vertex Color Mode | Material, colores de vértice de malla, iluminación de vértice GTE o color plano |
| Flat Color | Color definido en el renderizador para el modo Flat Color |
| Receive Fog | Participa en la mezcla de distancia y niebla por vértice de PS1 |
| Renderer Room | Room opcional GameObject utilizada para el rechazo de conectividad de la Room |
Las primitivas disponibles son Cube, Plane y Capsule. Al compilar para PS1,
la geometría estática de Plane y Cube puede dividirse en fragmentos de malla
para facilitar su renderizado. Capsule utiliza 96 triángulos tanto en el editor
como en PS1, con un radio local de 0.5 y una altura total de 2 unidades. El tamaño
de la malla no configura automáticamente un Character Controller: ajusta ese
componente por separado y toma en cuenta la escala de la entidad.
Mesh Vertex Colors y GTE Vertex Lighting utilizan primitivas nativas Gouraud G3/GT3 en rutas compatibles. GTE Vertex Lighting se evalúa en tiempo de ejecución a partir de normales de malla; no es un preprocesamiento de iluminación fuera de línea.
Camera
Define un punto de vista de renderizado.
| Propiedad | Descripción |
|---|---|
| FOV | Campo de visión en grados |
El tiempo de ejecución utiliza una cámara habilitada o una cámara impulsada por una configuración CameraRig/player.
Lua Behaviour
Adjunta un archivo de script Lua a GameObject.
| Propiedad | Descripción |
|---|---|
| Script Path | Ruta relativa a un archivo .lua |
| Script Properties | Cadenas clave/valor expuestas a Inspector pasadas al script |
Las callbacks del ciclo de vida de Engine usan nombres exactos de PascalCase:
Awake,OnEnable,Start,FixedUpdate,UpdateyLateUpdate;OnCollisionEnter,OnCollisionStayyOnCollisionExit;OnTriggerEnter,OnTriggerStayyOnTriggerExit;OnDisableyOnDestroy.
Botones, Interactivos, Líneas de tiempo y GameObject.Invoke llaman a funciones Lua personalizadas por su nombre configurado exacto. Esas funciones están definidas por proyectos y no son alias del ciclo de vida.
Consulta la Descripción general de la API de Lua.
Collider
Define un volumen de colisión para bloqueo y disparadores.
| Propiedad | Descripción |
|---|---|
| Type | Caja o esfera |
| Size / Radius | Dimensiones de forma |
| Is Trigger | Solo solapamiento, sin respuesta de bloqueo |
Los Colliders son utilizados por las callbacks de colisión, callbacks de trigger, interactuables, pickups, estaciones, y el bloqueo de la geometría del mundo.
La colocación de la escena Level Builder crea un AABB Collider para la malla colocada. Sintonízalo en el Inspector si los límites generados son demasiado amplios o demasiado estrechos.
El entorno de ejecución de PS1 usa una fase amplia de detección de colisiones de capacidad fija con barrido y poda para los pares de Collider activos; después ejecuta las pruebas de forma habituales sobre los candidatos resultantes. Si el estado de la fase amplia no es válido o no está disponible, utiliza de forma conservadora la comprobación de todos los pares. Esta optimización no requiere configuración en el proyecto y no cambia los callbacks de colisión ni de trigger.
Character Controller
Collider de locomoción de alto nivel para un movimiento estilo jugador.
| Propiedad | Descripción |
|---|---|
| Height | Altura de la cápsula |
| Radius | Radio de la cápsula |
| Step Offset | Escalada de pequeños pasos |
| Slope Limit | La pendiente máxima transitable |
| Skin Width | Relleno de colisión |
| Usa Gravity | Aplicar gravedad a través del controlador |
Utiliza Character Controller para el movimiento de jugadores en primera y tercera persona en lugar de traducir manualmente a través de World Colliders.
Las pruebas de paso, tierra y pendiente muestrean el verdadero plano superior de los Colliders de caja rotada. Step Offset controla pequeñas subidas y Slope Limit rechaza las caras superiores más pronunciadas. Este es un manejo de superficie específico del controlador, no un solucionador OBB de cuerpo rígido general o un sistema de plataforma móvil.
Player Input
Asigna la entrada del mando a las acciones de movimiento, vista, carrera e interacción. El movimiento usa el stick izquierdo o el D-Pad. La vista de la cámara usa el stick derecho cuando hay un mando analógico disponible. Los componentes nativos del jugador no reutilizan los botones superiores ni los gatillos como ejes de cámara.
| Propiedad | Descripción |
|---|---|
| Scheme | FirstPerson, ThirdPersonTank o ThirdPersonCameraRelative |
| Move Action | Eje de movimiento nombrado |
| Look Action | Eje de mirada nombrado |
| Run Button | Nombre del botón, predeterminado Circle |
| Interact Button | Nombre del botón, predeterminado Cross |
| Look Sensitivity X/Y | Camera/sensibilidad del controlador |
| Invert Look Y | Invertir aspecto vertical |
| Dead Zone | Zona muerta analógica |
Usa Player Input con Player Motor y un componente de controlador. En DuckStation, selecciona Digital Controller para proyectos que solo usen el D-Pad, o Analog Controller/DualShock con el modo analógico activado para controlar la cámara con el stick derecho.
Player Motor
Controla los valores de movimiento utilizados por los controladores de jugadores nativos.
| Propiedad | Descripción |
|---|---|
| Move Speed | Velocidad de movimiento normal |
| Run Speed | Velocidad de carrera |
| Turn Speed | Velocidad de rotación |
| Gravity | Fuerza de gravedad |
| Acceleration | Aceleración de movimiento |
| Allow Run | Permite la entrada de ejecución |
| Usa Gravity | Aplica gravedad a través de la pila del motor/controlador |
First Person Controller
Agrega el comportamiento de la cámara en primera persona a un jugador GameObject.
| Propiedad | Descripción |
|---|---|
| Eye Height | Altura Camera por encima de la base de jugadores |
| Lock Cursor On Play | Comportamiento del modo de reproducción del editor |
| Head Bob | Opcional cámara bob |
| Head Bob Amount | Bob Intensidad |
Configuración típica: Player Input, Player Motor, Character Controller, First Person Controller, Camera Rig y un Interaction Ray.
Third Person Controller
Añade comportamiento de movimiento en tercera persona.
| Propiedad | Descripción |
|---|---|
| Control Scheme | Movimiento relativo del tanque o de la cámara |
| Camera Distance | Seguir distancia |
| Camera Height | Seguir altura |
| Usa Camera Zones | Permite que CameraZone sobrescriba los valores |
Configuración típica: Player Input, Player Motor, Character Controller, Third Person Controller, Camera Rig, un Mesh Renderer visible y Animator de jugador opcional.
Camera Rig
Controla una cámara con respecto a un objetivo GameObject.
| Propiedad | Descripción |
|---|---|
| Mode | FirstPerson, ThirdPersonFollow, ThirdPersonOrbit o Fixed |
| Target GameObject ID | GameObject para seguir u orbitar |
| Offset | Desplazamiento de cámara local |
| Eye Height | Altura de la cámara en primera persona |
| Distance / Height | Colocación en tercera persona |
| Follow Smooth | Seguir suavizado |
| Collide With World | Opción de colisión Camera |
| Pitch Min / Max | Límites del ángulo vertical de la cámara |
Camera Zone
Define un volumen que puede anular el comportamiento de la cámara.
| Propiedad | Descripción |
|---|---|
| Mode | Fixed, Follow u Orbit |
| Camera GameObject ID | Camera o objetivo de plataforma |
| Priority | Gana mayor prioridad |
| Size | Límites de zona |
| Cut On Enter | Cambio instantáneo en lugar de transición gradual |
| Blend Time | Tiempo de transición |
Las zonas Camera son más útiles en escenas en tercera persona.
Interaction Ray
Permite a un jugador consultar objetos interactuables frente a ellos.
| Propiedad | Descripción |
|---|---|
| Cast Mode | Ray o Sphere |
| Distance | Alcance de interacción |
| Radius | Radio del barrido esférico |
| Prompt | Texto del aviso |
| Target GameObject ID | Objetivo explícito opcional |
| Function Name | Función Lua personalizada exacta para llamar, comúnmente interact |
| Require Line Of Sight | Bloquea la interacción a través de la geometría |
Interactable
Marca un GameObject como un objetivo de interacción.
| Propiedad | Descripción |
|---|---|
| Enabled | Incluir el objetivo en las consultas y mensajes de interacción |
| Prompt | Texto mostrado al jugador |
| Function Name | Función Lua Behaviour invocada por la interacción |
| Radius | Radio de interacción |
| Button | Botón específico del objetivo, o heredar Player Input.Interact Button |
| Cooldown | Segundos antes de que el objetivo pueda ser utilizado de nuevo, 0..3600 |
| Repeatable | Permitir interacciones posteriores; cuando está apagado, consumir después de la primera activación aceptada |
| Prompt Canvas | Se muestra un lienzo con nombre opcional mientras este objetivo está dentro del alcance |
Los nombres específicos de destino compatibles son Cross, Circle, Square, Triangle, L1, L2, R1, R2, L3, R3, Start y Select. La interacción utiliza el borde presionado del botón, no un estado mantenido continuamente. Cuando Prompt Canvas está vacío o no se puede resolver, el tiempo de ejecución muestra el texto Button: Prompt incorporado. Combina Interactable con un componente Lua Behaviour cuando el objeto debe reaccionar a la entrada del jugador. Lua puede deshabilitar o volver a habilitar temporalmente el componente a través de la API de Interactable.
Spawn Point
Define dónde deberían aparecer o reaparecer los sistemas de estilo de jugador.
| Propiedad | Descripción |
|---|---|
| Spawn ID | Nombrado punto de aparición |
| Default Spawn | Se utiliza cuando no se solicita un engendro específico |
Particle System
Emite partículas deterministas delimitadas de vallas publicitarias de configuraciones de autoría.
| Propiedad | Descripción |
|---|---|
| Enabled / Play On Start | Participación en tiempo de ejecución y arranque automático |
| Loop / Duration / Start Delay | Tiempo del emisor |
| Rate | Partículas por segundo, con un límite de 60 |
| Lifetime | Vida mínima y máxima de las partículas |
| Local Offset | Origen de la emisión en relación con el GameObject |
| Velocity / Randomness | Velocidad aleatoria base y por eje |
| Color | Coloración de partículas RGBA de 8 bits |
| Seed | Secuencia aleatoria determinista |
Los preajustes Dust, Sparks y Steam proporcionan puntos de partida seguros para PS1. El Inspector estima la ocupación máxima frente al grupo compartido de 32 partículas. El ParticleSystem.Emit de Lua es la ruta global de un solo disparo; no inicia ni detiene un componente creado.
Audio Source
Reproduce un clip de audio VAG mediante la SPU de PS1.
| Propiedad | Descripción |
|---|---|
| Audio Clip | WAV importado convertido a .vag |
| Volume | Volumen de reproducción |
| Loop | Si los bucles de reproducción |
| Play On Start | Iniciar automáticamente cuando se carga la escena |
El audio reside en la memoria de la escena. Los clips importados deben ajustarse al presupuesto de audio del runtime. Para música de fondo larga, normalmente conviene usar Streaming Music (CD-XA) y la API global Music de Lua en lugar de un Audio Source.
Directional Light
Añade datos de iluminación direccional.
| Propiedad | Descripción |
|---|---|
| Direction | Dirección de la luz principal |
| Color | Color de luz direccional |
| Intensity | Multiplicador de contribución direccional |
| Ambient | Ambient Contribution |
El tiempo de ejecución de PS1 utiliza una trayectoria de iluminación direccional limitada. Mantén la iluminación simple y motivada.
Transform Animator
Controles denominados estados de animación de transformación en un GameObject.
| Propiedad | Descripción |
|---|---|
| States | Estados de animación nombrados |
| Default State | El Estado jugó inicialmente |
| Speed | Velocidad de reproducción |
| Loop | Si los bucles de reproducción |
| Play On Start | Iniciar automáticamente |
Lua puede reproducir, detener, establecer la velocidad, consultar el estado y cambiar el estado de la animación a través de la API de TransformAnimator. Este componente anima estados de transformación; no es el componente esquelético importado.
Una escena admite como máximo 32 componentes Transform Animator y cuatro estados por componente. El tiempo de ejecución de PS1 asigna almacenamiento de estado desde un grupo de componentes determinista solo para GameObjects que posee este componente, en lugar de reservar cuatro registros de estado dentro de cada escena GameObject. La validación bloquea escenas que exceden cualquiera de los límites.
Animator
Reproduce clips importados desde un recurso FBX con skinning rígido.
| Propiedad | Descripción |
|---|---|
| Enabled | Participar en la actualización y el renderizado |
| Skin | Activo .skn importado |
| Default Clip | Clip con nombre inicial |
| Playback Speed | Multiplicador de tiempo de clip |
| Loop | Reiniciar después del cuadro final |
| Play On Start | Iniciar el clip predeterminado automáticamente |
El GameObject también utiliza su material y textura Mesh Renderer. Consulta Animación esquelética para importar, controlar el comportamiento, los límites y la reproducción de Animator.
Player Animator
Mapas de los estados de movimiento del jugador nativo a los nombres de estado Transform Animator.
| Propiedad | Descripción |
|---|---|
| Idle State | Estado Transform Animator para inactivo |
| Walk State | Transform Animator estado para caminar |
| Run State | Estado Transform Animator para ejecutar |
| Interact State | Transform Animator estado de interacción |
| Speed Damp | Humedeciendo los cambios de estado |
Úsalo con el Third Person Controller o cualquier representación visible del jugador que necesite una animación de transformación basada en el estado.
Room y Portal
La Room define un volumen con nombre alineado con el eje con prioridad de desplazamiento y superposición. Portal hace referencia a dos habitaciones y controles dirigidos a la conectividad de visibilidad con estado habilitado, abierto y de dos caras. El estado del Portal puede cambiar con Portal.SetOpen().
El entorno de ejecución de PS1 conserva la primera habitación detrás de cada abertura adyacente válida. Después recorre los portales posteriores mediante pruebas conservadoras de superposición entre conos de abertura. Ante datos ambiguos, conserva la visibilidad para evitar que desaparezca geometría. Play Mode y PS1 comparten estas pruebas para un mismo estado de escena y cámara. Es un sistema de visibilidad conservador; no realiza oclusión exacta contra los planos del Portal ni consultas de oclusión por hardware. Consulta Habitaciones, portales y navegación.
NavMesh Surface, Navigation Modifier y NavMesh Agente
NavMesh Surface describe un gráfico de altura limitada preprocesamiento con X/Z Cell Size, altura de celda vertical, aclaramiento del agente, Max Step, Max Slope y Max Drop. Soporta la rotación de la superficie Y y enlaces deterministas de cuatro vecinos. Pueden existir múltiples muestras de altura en una coordenada X/Z.
Navigation Modifier clasifica un Collider raíz como Obstacle, Walkable, Platform o WalkOff. Walkable y Platform requieren Colliders de caja sólidos y muestrean su cara superior real, con su rotación. WalkOff requiere un trigger y permite descensos limitados en una sola dirección. Platform sigue siendo información estática de preprocesamiento; no implementa plataformas móviles. Para el preprocesamiento, la geometría de obstáculos normal permanece en la raíz y solo admite rotación alrededor del eje vertical.
El agente NavMesh hace referencia a una superficie y almacena la velocidad, la aceleración, la distancia de parada y el comportamiento de rotación a velocidad. Los agentes deben permanecer en la raíz GameObjects porque las rutas de preprocesamiento y el movimiento en tiempo de ejecución usan posiciones en el espacio mundial. Las rutas del agente pueden usar la superficie asignada y otras alcanzables mediante Navigation Links explícitos. Las superficies desconectadas no se unen automáticamente.
Usa el API de NavMesh en Lua para solicitar rutas y mover agentes.