contacto[arroba]digitallearning.es
Video Implementar Dos Camaras En Unity3D

Ejemplo en Unity 3D: activar segunda cámara en una escena

Post Series: Conociendo Unity 3D (III)

Siguiendo con el GameObject Camera de Unity 3D, explicaremos un ejemplo donde se activará una segunda cámara en un escena del videojuego.

Al final de este tutorial incluimos un video (acceso para usuarios Premium) donde explicamos en detalle el desarrollo de este ejemplo y mostrando el resultado que tendría en nuestra escena del juego en la ventana Game.

Además, en la próxima serie de tutoriales seguiremos presentando GameObjects de Unity 3D

La escena tendrá dos cámaras: una de ellas será la cámara principal, que se sitúa desde el punto de vista del jugador, y otra secundaria que inicialmente estará desactivada y que se activará cuando se produzca una acción concreta en el desarrollo del juego (en este caso será una colisión de un objeto con el jugador). Esta cámara estará situada más alejada y perpendicular al escenario, mostrando así un punto de vista diferente del juego en acción.

Vamos por tanto a establecer la lógica, creando un script para que en el momento en que se produzca una colisión de un objeto primitivo (Sphere) con el personaje del jugador, se cambie la cámara desde la que visualizamos el videojuego.

Elementos imprescindibles para el desarrollo del ejemplo:

  • GameObject Terrain para definir el escenario del juego.
    (Nota: se recomienda revisar los tutoriales que publicamos sobre creación y configuración de un terreno)
  • GameObject Sphere, que además de los componentes que adjunta por defecto, deberá añadirse un componente «Rigidbody» (componente que añade a un GameObject algunas características que tendría un cuerpo en la realidad, como podrían ser masa, gravedad, fricción, etc.).
  • GameObject First Person Controller para mover un jugador por la escena.
    Este GameObject será padre de los objetos Graphics (formado por los componentes Mesh Filter y Mesh Renderer descritos en tutoriales anteriores) y Main Camera (cámara principal del juego que se establece desde el punto de vista del jugador).

    Recordemos que este prefab First Person Controller proporciona una vista subjetiva para manejar un personaje a lo largo del escenario y es un tipo de asset personalizado, formado por un GameObject que define sus componentes y propiedades.
    Se describirá más en profundidad cuando se trate el componente Character Controller, pero para facilitar la comprensión y puesta en marcha del ejemplo se comentará que para añadir este objeto a la escena bastará con seleccionarlo dentro de los recursos disponibles, a partir de la ruta: Assets > Standard Asset > Character Controllers y arrastrar el prefab First Person Controller a la escena.
    (Nota: para tenerlo disponible, es necesario importar el recurso al crear el proyecto o bien desde el menú Assets > Import Package > Character Controller)

  • Script «CambioCamara» para controlar la colisión del personaje que maneja el usuario con el objeto Sphere.
  • Cámara secundaria, inicialmente no activa, desde la que visualizar una perspectiva diferente al producirse la colisión entre el objeto Sphere y el GameObject First Person Controller.

Cámara principal

Imagen que muestra la Cámara principal

Cámara secundaria

Imagen que muestra Cámara secundaria

Scripts

Aunque hablaremos más en detalle de los scripts en Unity 3D en publicaciones posteriores, necesitamos ya crear uno para este ejemplo, así que vamos a dar unas nociones básicas para que puedas utilizarlo.

¿Qué son los scripts en Unity 3D?

Un script ó guión es un pequeño programa que podemos asociar a uno o varios GameObjects como si se tratara de un componente más. Su objetivo es proporcionar una funcionalidad concreta a ese GameObject a través de la ejecución de los procedimientos y órdenes que contenga dicho script.

Unity admite de forma nativa tres lenguajes de programación: C# (muy similar a Java), UnityScript (variación de Javascript) y Boo (derivado de Python).
Nosotros emplearemos C# en todos nuestros ejemplos y proyectos por ser el que prima Unity (le da un soporte especial y la documentación está basada en él) y por ser el más utilizado, con mucha diferencia, por la comunidad de usuarios de Unity, lo que facilita luego el aprovechamiento de scripts ya creados por dicha comunidad en nuestros propios videojuegos.

En cuanto al formato y la forma de añadiros, los scripts no son más que archivos de texto plano, y podemos crearlos de la forma siguiente:

  • Con el botón derecho del ratón sobre cualquier carpeta de la ventana «Project», y seleccionando la ruta Create > Javascript, C# Script o Boo Script (también es posible acceder a esta opción a través de la ruta Assets > Create).
  • Otra posibilidad, es seleccionando el botón «Add Component» situado al final de la ventana «Inspector» del GameObject seleccionado, y pulsando sobre la opción New Script (a continuación se deberá indicar el nombre del script y el lenguaje de programación en el que se desea programar):

Pantalla creación script en Unity

 

A continuación, se describirá el Script encargado de activar la cámara secundaria y cambiar la vista del videojuego al colisionar el objeto Sphere y el GameObject First Person Controller. Tanto este script como el desarrollo del ejemplo en general,  lo verás también explicado en el video que presentamos al final, mostrando el resultado en la escena del juego.

En el script se puede apreciar cómo se hace uso de un método predefinido denominado OnCollisionEnter , que será invocado cada vez que el objeto que lleva este Script colisiona con otro objeto de la escena. Dentro de este método, se establece la condición de que si la colisión se establece con un objeto llamado «Sphere», la cámara secundaria será activada y se visualizará el videojuego desde esta nueva perspectiva. Los GameObjects declarados a nivel de clase, se inicializan desde el editor de Unity (se deben establecer las variables GameObject en public para acceder a ellas):

Una vez se ha descrito e implementado el script CambioCamara dentro del GameObject FirstPersonController, será necesario asignar a cada una de las variables de ámbito public y de tipo GameObject ( camaraVisionExterna  y firstPerson), las diferentes cámaras que intervienen en el proyecto.

A continuación, te mostramos el desarrollo y resultado de este ejemplo en el siguiente video:

 

This Post Has One Comment

Comments are closed.