Componentes. El ADN de UE4.
UE4 viene con una infinidad de características. Desde reproducir sonidos hasta renderizar modelos. Todas estas características están encapsuladas en objetos llamados componentes.
Componente
¿Qué es un componente? Un componente es una característica o funcionalidad del engine. Un ejemplo ilustrativo: un mecánico que quiere fabricar un coche. Necesitas piezas como ruedas, chasis, luces, etc., El coche es a tu videojuego lo que las piezas del coche a los componentes.
Hay infinidad de componentes, por ejemplo el StaticMeshComponent toma una geometría (modelo 3d) y un material y lo renderiza en escena.
El componente SkeletalMeshComponent hace lo mismo que StaticMeshComponent pero con geometrías con huesos.
Un componente SpotLightComponent emite luz como una lámpara. Un ParticleSystemComponent reproduce un efecto de partículas así como SoundComponent reproduce audios. Hay una infinidad de componentes.
Jerarquía de clases para los componentes
Hay que diferenciar entre jerarquía de componentes, lo veremos más abajo, y la jerarquía de clases de los componentes, que vamos a ver ahora.
Vamos a empezar por el componente más sencillo y "tonto" del mundo. El componente ActorComponent. No hace nada pero es imprescindible porque es la base de todos los demás componentes.
Si quieres crear tus propios componentes probablemente quieras crearlos a partir de un ActorComponent.
Si quieres colocar un componente en el mundo, con una posición, rotación y escala, entonces tenemos el componente SceneComponent que hereda directamente de ActorComponent.
Los componentes SceneComponent son excelentes para usar como apoyo cuando construyas las jerarquías de componentes en los actores.
De SceneComponent tenemos como hijo importante el PrimitiveComponent. El componente PrimitiveComponent proporciona colisiones y física.
Los hijos principales de PrimitiveComponent son StaticMeshComponent para renderizar modelos 3D junto con un material y los SkeletalMeshComponent para los modelos con huesos.
Actor
Sin embargo, los componentes no van cada uno por su cuenta. Tampoco se pueden añadir tal cuál a una escena. En vez de eso, los componentes se organizan formando jerarquías (que no tiene nada que ver con la jerarquía de clases). Estas jerarquías son añadidas a un objeto llamado Actor. Y éstos actores son los que se añaden a la escena.
Un Actor es cualquier objeto que puede ser añadido a la escena y está compuesto por una jerarquía de componentes.
Por tanto, cualquier cosa que veas en la escena es, necesariamente, un Actor. Si pulsas sobre él verás su jerarquía de componentes:
Para ilustrar todo esto, vamos a intentar crear el siguiente Actor:
En primer lugar, el actor está compuesto por varios assets. En concreto, un modelo 3D:
Y un efecto de partículas:
Para crear un actor:
Por defecto el actor ya trae una jerarquía de componentes con un único componente. El componente es un SceneComponent. Los componentes SceneComponent no tienen representación gráfica pero puede posicionarse en la escena: posición, rotación y escalar.
Podemos añadir nuevos componentes al actor:
En concreto para renderizar el modelo necesitamos un StaticMeshComponent. Que alimentamos con el modelo 3D y un material.
Del mismo modo para el efecto de partículas usamos un ParticleSystemComponent que alimentamos con el sistema de partículas anterior.
Y con ésto tenemos listo el Actor.
Y ahora podemos añadir el actor a la escena. Simplemente arrastrando.
Otra forma de crear actores es arrastrar directamente los assets a la escena. Por ejemplo, si arrastras un sonido a la escena entonces directamente crearás un Actor con un componente AudioComponent y el asset de sonido asignado. Otro ejemplo, si arrastras directamente un static mesh crearás un Actor con un componente StaticMeshComponent y el asset static mesh asignado. Del mismo modo si arrastras una cámara crearás un Actor con un CameraComponent asignado.