Aprende Unreal Engine 4

Componentes. El ADN de UE4.

March 14, 2018 | 3 Minute Read

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.

Hiearchy Components

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:

Chair Scene

Para ilustrar todo esto, vamos a intentar crear el siguiente Actor:

Propane Flame

En primer lugar, el actor está compuesto por varios assets. En concreto, un modelo 3D:

Propane Flame

Y un efecto de partículas:

Efecto de Partículas

Para crear un actor:

New 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.

Add Component

Podemos añadir nuevos componentes al actor:

Add New Component

En concreto para renderizar el modelo necesitamos un StaticMeshComponent. Que alimentamos con el modelo 3D y un material.

Set Static Mesh

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.

Actor

Y ahora podemos añadir el actor a la escena. Simplemente arrastrando.

Place Actor

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.