
Las luces son herramientas muy usadas en los videojuegos. No importa si es un estudio indie quien los hace, o una gran empresa. También es cierto que el jugador puede necesitar interactuar con ellas para encender o apagar ciertas bombillas, lámparas, o simplemente luces de nuestro escenario. Obviamente esto dará más profundidad a nuestro proyecto.
Sabiendo esto, vamos a ver paso por paso cómo podemos encender y apagar una luz pulsando un botón específico.
Añadiendo una luz a la escena
Es lógico que, si hablamos de encender/apagar una luz necesitemos la propia luz en nuestra escena. Pues bien, aunque parezca obvio, necesitamos que la luz esté en la escena.
Para ello dirígete a la pestaña «Modos» y ve a la subpestaña «Luces«. Allí encontrarás una amplia variedad de luces. Simplemente escoge la que necesites y arrástrala a la escena. Una vez arrastrada, vas a necesitar colocarla en el espacio correcto. Asegúrate que está donde realmente quieres que esté moviéndola con el gizmo de movimiento.
Colocando un Trigger Volume
De igual forma que añadiste la luz anteriormente necesitas añadir un Trigger Volume. A grandes rasgos va a ser el que controle si estás en condiciones de encender la luz en cuanto a distancia se refiere. Va a comprobar que el jugador se encuentre dentro del cubo invisible para poder interactuar con la luz. Es por eso que necesitas colocarlo donde se encuentre el interruptor. Debe estar en una posición del espacio realista.
Para añadirlo dirígete a la pestaña «Modos» y, una vez dentro, a la subpestaña «Volúmenes«. Haciendo scroll vertical encontrarás «Trigger Volume«.
Repito que es muy importante que lo coloquéis en una posición realista. Una buena práctica sería colocar el activador enfrente del interruptor que enciende la luz.
El Blueprint del interruptor – Crear una variable
Vamos a sumergirnos en el código en cuestión. Para ello, abrimos el Blueprint del Nivel (En la parte superior, Blueprints -> Open Level Blueprint).
Una vez dentro del Blueprint, vamos a crear una variable del tipo Boolean (En la parte izquierda, clicamos en el símbolo ‘+’, al lado de ‘Variables’). Le ponemos un nombre, y ajustamos el tipo de variable a Boolean, es decir, delante del nombre debe aparecer una pastilla roja.
El Blueprint del interruptor – Ajustando el código del Trigger o Activador
Ahora vamos a clicar, desde la escena, en el trigger que creamos con anterioridad. Volvemos al Blueprint del Nivel con el Trigger seleccionado, y hacemos clic derecho en cualquier parte vacía de la pizarra. Se abrirá un menú desplegable, y clicamos en ‘Add Event for [Nombre]‘ -> ‘Collision‘ -> ‘Add On Actor Begin Overlap‘. Tened en cuenta que el ‘Contexto Sensible‘ debe estar marcado. De lo contrario no podéis hacerlo.
Una vez hecho esto, repetimos pero clicando finalmente en ‘Add On Actor End Overlap‘.
El Blueprint del interruptor – Ajustando la variable
Arrastramos la variable que hemos creado a la pizarra. Se nos facilitará dos opciones: ‘Set’ o ‘Get’. En este caso, vamos a clicar en ‘Set’. Conectamos el nodo con el ‘Begin Overlap‘ y marcamos la casilla del ‘Set’.
Repetimos esto último, pero sin marcar la casilla y conectándolo en el ‘End Overlap‘.
El Blueprint del interruptor – Indicador de que podemos interactuar
Esto es opcional, por lo que puedes saltarte este paso si lo deseas.
Lo que vamos a hacer es programar que la lámpara (o cualquier objeto que queráis) para que emita luz y nos indique que podemos interactuar. Dejo por aquí el videotutorial del material que vamos a usar: UE4 | Cómo hacer un material que parpadee levemente
Ahora sí, vamos a por el código.
Sacamos de los pines de salida de los dos ‘Set’ que tenemos un nodo, y escribimos ‘Ajustar Material‘, o ‘Set Material‘ en la versión inglesa. Se nos habrá conectado con el ‘Set’. Todo genial.
‘Ajustar Material’ nos va a pedir una referencia. Esto es, debemos indicarle a qué objeto queremos cambiarle la textura (el material). Para indicárselo a Unreal debemos clicar, desde la escena, en el objeto que queremos que cambie. En mi caso, lo hice con la lámpara.
Una vez clicado el objeto nos dirigimos al Blueprint del Nivel, y pulsamos botón derecho del mouse, y teniendo el ‘Contexto Sensible‘ activado, clicamos en ‘Create a Reference to [Nombre]‘. Ya solo falta conectar esta referencia con el pin de entrada del ‘Meta‘.
Hacemos lo mismo, pero esta vez lo conectamos al ‘Set‘ del ‘End Overlap‘.
Y ya solo nos falta indicarle qué materiales queremos. En el ‘Ajustar Material‘ del ‘Begin Overlap‘ vamos a indicarle que queremos el material que parpadea. Y en el otro, seleccionamos el material del objeto por defecto.
El Blueprint del interruptor – Ajustando la interacción
Poco a poco vamos llegando a nuestro objetivo. Lo que vamos a hacer ahora es elegir con qué tecla vamos a interactuar. En un espacio vacío de la pizarra, clic derecho, y escribimos la letra que queramos seguido de la palabra ‘input‘. Del pin ‘Pressed‘ sacaremos un ‘Delay‘ y lo ajustamos a 0.2 segundos (o el tiempo que quieras). Del pin de salida escribimos ‘if‘ y arrastramos la variable que creamos anteriormente a ‘Condition‘.
Del pin de salida ‘Verdadero’ o ‘True’ sacamos un ‘Play Sound 2D’ y elegimos un sonido de interruptor (opcional).
El Blueprint del interruptor – Ajustando la luz
Sacamos otro ‘If‘ y en la condición, escribimos ‘Get Intensity‘. De aquí, conectamos el pin de salida a un comparador ‘float mayor que float‘ (escribiendo en el buscador el símbolo ‘>’).
Lo dejamos en cero. Es decir, la intensidad > 0.0.
Ahora bien, de la intensidad debemos conectar algo en el pin de entrada. Ese algo es la luz que queremos encender/apagar. Para ello, como siempre, seleccionamos desde la escena la luz que queramos y creamos la referencia en la pizarra del Blueprint. La referencia la conectamos al ‘Get Intensity’.
Y por último, sacamos del ‘Verdadero’ del ‘If’ que hemos creado el nodo ‘Ajustar Intensidad‘. Lo mismo hacemos para el ‘Falso’. La única diferencia es que en el ‘Verdadero’ la intensidad la escribimos como 0.0 y en el otro, 2000.
Si lo hemos hecho bien, nos debe de funcionar a la perfección.
¡Recuerden que hay más artículos y vídeos relacionados en la web!