EJERCICIO3_Controlando luces en tiempo real

En este ejercicio aprenderás a programar el encendido y apagado de una linterna que vamos a colocar en nuestro personaje. Te mostraré cómo acceder al componente de Light y cambiar sus parámetros mediante el código.

A continuación creamos una linterna que usará nuestro personaje. Para ello nos venimos a la opción GameObject>Light>SpotLight

EJERCICIO3_Controlando luces en tiempo real

Renombramos nuestro spotlight como linterna dentro de la pestaña de Jerarquía Definimos nuestra linterna con los siguientes parametros:

EJERCICIO3_Controlando luces en tiempo real

Seguidamente deberemos unir nuestra linterna dentro del elemento player o jugador, el cual será una capsula que creamos con la opción GameObject>3D>Capsule.
Para ello lo que haremos es venirnos a la pestaña de la jerarquía y asignar la linterna dentro del objeto capsule de esta manera lo convertiremos en un hijo del elemento y así si movemos nuestro player la linterna se moverá con él.
Para darle un mayor realismo anidaremos también la camara con la linterna. Quedando como carpeta contenedora Capsule(Player)>MainCamera>Linterna

EJERCICIO3_Controlando luces en tiempo real

Para realizar la operación de anidar estos objetos en el objeto padre que es el player debemos arrastrar cada elemento dentro del elemento como si este se tratará de una carpeta de windows de esta manera quedará ahijada a nuestro player.

Seguidamente vemos que la linterna y nuestro player aunque ya anidados no comparte el mismo espacio por lo que vamos a resetear la posición de nuestra linterna y así tome el lugar que corresponde al player:
Clic>Botón derecho dentro de la pestaña transform>Reset

EJERCICIO3_Controlando luces en tiempo real

De esta manera ya tendríamos la linterna configurada en la posición que queremos. El siguiente paso es bajar la luz ambiente de nuestro paisaje. Para ello seleccionamos la luz direccional y bajamos su intensidad para crear un aspecto mas de noche y poder así ver mejor con la linterna.

EJERCICIO3_Controlando luces en tiempo real

Esta sería la visión final de nuestro juego donde vemos lo que vería en primera persona nuestro player:

EJERCICIO3_Controlando luces en tiempo real

Hecho esto vamos a crear un script que nos permita apagar y encender, habilitar y deshabilitar, nuestra linterna al clicar en una tecla de nuestro teclado.

En la función update vamos escribir el siguiente codigo:

EJERCICIO3_Controlando luces en tiempo real

Vamos a hacer una condiciуn para tener la tecla que queremos pulsar seria usar “if (Input.GetKeyDown)” queremos que solo pase cuando pulsemos esa tecla por ello utilizamos el Down. Dentro del input utilizamos la siguiente instrucciуn (KeyCode.L)) aqui le definimos que la letra que clicaremos es la L.

Una vez definida la condiciуn pasaremos a coger el componente Light y habilitaremos la propiedad de enabled que es la propiedad de habilitar es decir que se active la acciуn de la linterna que es proyectar luz por lo que el cуdigo queda asi:
GetComponent<Light>().enabled

Si a esta propiedad la dejу como true estare encendiendo la linterna y se le asigno false la estare apagando
GetComponent<Light>().enabled=true > Encendida
GetComponent<Light>().enabled=false > Apagada

Pero lo que queremos es que cambie todo el rato segun la estamos pulsando, lo que vamos a hacer es asignarle lo contrario a lo que ya valga y la forma de escribirlo es con este truco de programaciуn.

Anadimos una exclamaciуn a la siguiente linea despues del igual y tendremos asн nuestro cуdigo definido:
GetComponent<Light>().enabled=!GetComponent<Light>().enabled
Es decir que si la primera premisa vale true la siguiente valdra la contraria que es false y viceversa.
De esta manera, cada vez que el jugador pulse la tecla L, alternara el estado de la linterna.
Guardaremos el ejercicio como LinternaPlayer.

Categorías: Unity