Creando un Controlador de Tercera Persona desde Cero en Unity

Cómo Crear un Third Person Controller en Unity desde Cero: Una Guía Detallada

Introducción

Hola, ¿Qué tal? Bienvenido a este nuevo tutorial donde te enseñaré cómo Crear un Third Person Controller en Unity desde Cero. En este tutorial detallado, vamos a ver de forma muy fácil y didáctica cómo crear un controlador de tercera persona (TPC o Third Person Controller) en Unity. Además, le añadiremos un sistema de seguimiento de cámara para dar un realismo y profesionalidad insuperable a nuestro proyecto.

1. Iniciar un nuevo proyecto Unity

Desde cero es desde cero, por lo que vamos a iniciar este tutorial desde la creación de un nuevo proyecto. Para ello, abre Unity Hub y pulsa el botón New Project

A continuación se abrirá la ventana de selección de tipo de proyecto y configuración inicial, lo primero es cercionarse de la versión de Unity Editor que queremos usar más arriba, luego, seleccionamos el tipo de proyecto, en nuestro caso recomiendo usar 3D (URP). Sino tienes instalada la plantilla para este tipo de proyecto, puedes pulsar el botón de la nube para descargarlo:

Ya con la plantilla descargada y/o seleccionada, indica el nombre que le quieres poner a tu proyecto y finalmente pulsa el botón Create Project:

Tras un pequeño proceso, se abrirá el nuevo proyecto en Unity Editor.

2. Instalando Third Person Character Controller | URP

Bien, ya tenemos el proyecto iniciado y estás en el camino para Crear un Third Person Controller en Unity desde Cero. Ahora vamos a instalar el paquete (asset) oficial de Unity (gratuito) que nos va a facilitar mucho la vida a la hora de integrar un sistema de control de jugador en tercera persona en nuestro proyecto.

Como deciamos antes, Unity dispone de un Starter Assets que facilita enormemente la creación de un sistema de control de jugador, para descargarlo gratuitamente pulsamos aquí

Para añadirlo a nuestro proyecto, debemos pulsar el botón Add to my Assets (tendrás que crear una cuenta o iniciar sesión en Unity Asset Store) y posteriormente pulsar en Open in Unity

Genial, con esta última acción ya lo tendríamos vinculado a nuestra colección de assets, ahora, para acceder a esta colección y poder importarlo en el proyecto, nos dirigimos a la Barra de Menú Principal de Unity y seleccionamos la opción Window | Package Manager

Pulsamos el filtro de origen de assets y seleccionamos My Assets

Ahora, debajo del todo, pulsamos All para mostrar todos los assets, de lo contrario estará paginado y si tenemos muchos, tardaremos en encontrarlo.

Una vez hayas pulsado ver todos, debemos buscar por la letra «S» y localizar el asset Starter Assets – Third Person Character Controller | URP

Bien, una vez lo hayamos localizado, seleccionamos este asset y a la derecha, pulsamos primero en el botón Download, cuando finalice la descarga, procedemos a pulsar Import

Es posible que Unity nos avise de la necesidad de instalar o actualizar dependencias para usar este paquete, pulsamos en el botón Install/Upgrade para continuar

Se lanzará una barra de progreso que puede tardar algunos segundos, al finalizar, posiblemente Unity nos avise de que hay que corregir un asunto relacionado con el nuevo sistema de entrada (New Input System), simplemente pulsamos SI (Yes) y con esto Unity se reiniciará y la instalación estará casi completa.

Después de reiniciarse Unity, deberemos retomar el proceso de importación, ya que antes había sido necesario corregir el tema de las dependencias, por lo que ahora, volvemos a pulsar el botón Import en la ventana Package Manager y ahora si, nos lanzará la ventana que confirma la importación

Pulsamos el botón Import y esperamos que termine la barra de progreso. Para confirmar que todo ha ido bien, en la ventana Project, verás la carpeta StarterAssets y en su interior (por si ya la tenías antes por otro asset) la carpeta ThirdPersonController. ¡Todo bien!

3. Instanciamiento del Personaje en la escena

Ahora viene lo interesante (más). Ya tenemos todos los ingredientes para crear el personaje en tercera persona, lo primero que haremos será preparar una escena simple que permita probarlo. Para ello, haremos lo siguiente:

3.1. Preparar la Escena

Si has creado el proyecto desde cero, dispones de la escena de ejemplo que se encuentra en la carpeta Scenes y que se llama SampleScene

Si ya has empezado en un proyecto existente, usa la escena que prefieras o crea una nueva desde la opción File | New Scene de la Barra de Menú Principal de Unity

Bien, una vez la escena abierta, lo único que necesitamos crear para probar nuestro personaje es un suelo que impida que caigamos al vacío de forma isofacta, simplemente añadiremos un objeto Plane que haga que no nos matemos.

Para crear este suelo, en la Barra de Menú Principal de Unity, seleccionamos el menú GameObject | 3D Object | Plane y ya tendremos un suelo… Fácil, ¿no?

Este objeto ya viene con un componente Mesh Collider de serie, este Collider hará de barrera física para que nuestro jugador no caiga al vacío. Continuamos.

3.2. Preparando el Prefab del jugador

Bien ya tenemos el suelo, ahora nos falta el personaje, es muy sencillo y no tardaremos más de 5 minutos en crearlo, sigue estos pasos para conseguirlo:

3.2.1. En la ventana Project

Nos dirijimos a la ruta Assets | StarterAssets | ThirdPersonController | Prefabs y allí encontremos el Prefab llamado PlayerArmature.

3.2.2. Seleccionar y Arrastrar

Seleccionamos y arrastramos el Prefab PlayerArmature a la escena, encima del suelo que colocamos.

3.2.3. Añadir la Cámara

Ahora que ya tenemos al personaje en la escena, vamos a necesitar una cámara, si ya tienes una cámara en la escena, elimínala, de lo contrario entrará en conflicto con la que vamos a añadir y no hará el resultado que esperamos.

3.2.4. Vincular la Cámara

La cámara que vamos a añadir también viene preparada en formato Prefab y la podemos encontrar en la misma ruta que PlayerArmature, se llama MainCamera, la seleccionamos y arrastramos a la escena

No importa donde caiga la cámara, no tienes ahora que preocuparte por que esté alineado respecto al jugador, ahora veremos por qué.

Vamos a necesitar también otro Prefab llamado PlayerFollowCamera, se encuentra en la misma ruta, selecciónalo y arrástralo a la escena

Ahora habrás visto que ha ocurrido algo mágico, al arrastrar el Prefab PlayerFollowCamera a la escena, has podido ver como el GameObject MainCamera se ha «adherido» y ahora se mueven juntos, como si de una fuente magnética se tratara, esto es debido a lo siguiente:

Habrás visto que el GameObject PlayerFollowCamera tiene un componente llamado CinemachineVirtualCamera y el GameObject MainCamera tiene un componente con un nombre parecido, CinemachineBrain

Pues bien, esta pareja tiene un comportamiento curioso cuando están juntos, te lo detallo a continuación:

CinemachineBrain

Imagina que el CinemachineBrain es como el director de una película. Este componente se adjunta a la cámara principal de tu escena en Unity y toma decisiones sobre qué «toma» o «vista» debe estar activa en un momento dado. Es como si el director dijera: «Corte, cambiamos a la cámara 2».

El CinemachineBrain se encarga de gestionar múltiples CinemachineVirtualCameras y decidir cuál debe estar activa según las reglas que hayas establecido. Por ejemplo, si tienes una escena donde el personaje entra en una habitación, el CinemachineBrain podría cambiar automáticamente a una cámara que ofrezca una mejor vista del interior de esa habitación.

CinemachineVirtualCamera

Ahora, la CinemachineVirtualCamera es como una de las cámaras que el director tiene a su disposición. Puedes tener varias de estas en tu escena, cada una con su propia configuración y ángulo. Por ejemplo, podrías tener una para seguir al personaje, otra para mostrar una vista panorámica del entorno, etc.

Lo genial de estas «cámaras virtuales» es que son muy flexibles. Puedes ajustar todo tipo de parámetros, como el enfoque, el ángulo, la distancia, y muchas otras cosas sin tener que mover o ajustar una cámara real en la escena. Es como si tuvieras un camarógrafo virtual que puedes configurar exactamente como quieras.

En resumen

  • CinemachineBrain: El director que decide qué cámara se usa.
  • CinemachineVirtualCamera: Las cámaras individuales que puedes configurar para diferentes tomas o vistas.

Pues bien, al añadir PlayerFollowCamera, el componente CinemachineBrain lo ha detectado y lo ha vinculado automáticamente, genial, ¿No?

Perfecto, ahora queda vincular el GameObject PlayerFollowCamera al jugador, para hacer esto, desplegamos o abrimos el GameObject PlayerArmature y observamos en su interior un objeto llamado PlayerCameraRoot, este es el «ancla» que va a determinar la posición del jugador en todo momento.

Para vincularlo, simplemente vamos a seleccionar el GameObject PlayerFollowCamera, y en su panel de Inspector, vamos a arrastrar el GameObject PlayerCameraRoot dentro de la casilla vacía de la propiedad Follow

Super fácil, ¿Verdad? Ahora ya podemos probarlo

4. Probando lo que hemos hecho

Bien, ahora ya podemos pulsar el botón Play y probar si todo funciona

Boom¡ Funciona y vaya como funciona. Puedes mover el personaje con las teclas A,W,S,D, saltar con Space, correr con Shift, ¡Como si de un juego profesional se tratara¡

Enhorabuena, has conseguido crear fácilmente un controlador de personaje en tercera persona, tan solo falta un pequeño detalle para bordar esto.

Como has podido ver, hemos usado tres Prefabs para dar funcionalidad a nuestro jugador, esto esta genial, pero se vuelve un poco tedioso si queremos reutilizar este sistema y añadirlo en otras escenas, lo que conllevaría a tener que mover los tres objetos a todas partes, para esto hay una solución muy elegante, se trata de crear nuestro propio Prefab.

Para hacer esto, podemos hacerlo en la carpeta que queramos de la ventana Project, yo por ejemplo, crearé la mia propia en la ruta Assets | MyPrefabs y haremos doble click para acceder al interior

Lo que haremos será agrupar los tres objetos en uno, para ello, selecciona los tres GameObject y luego haz click derecho para seleccionar la opción Create Empty Parent

Una vez agrupados para un padre, arrastaremos el GameObject padre a la carpeta que hemos creado, inmediatamente tras soltar el ratón, se creará un Prefab nuevo llamado GameObject que contiene los tres objetos necesarios para nuestro sistema de tercera persona

Para finalizar, puedes hacer click derecho sobre el Prefab creado y ponerle el nombre que más te guste seleccionando la opción Rename, por ejemplo MiJugador.

Buen trabajo¡ De esta forma cada vez que quieras usar este sistema solo tendrás que arrastrar el Prefab MiJugador a tu escena.

¡Hasta aquí el tutorial¡

Versión Video

Conclusión y Próximos Pasos

¡Enhorabuena! Has logrado Crear un Third Person Controller en Unity desde Cero. Este es un gran paso para desarrollar juegos más interactivos y profesionales. Espero que este tutorial te haya sido de gran ayuda y que te sientas más cómodo trabajando con Unity y sus diversas funcionalidades. Si tienes alguna pregunta, duda o comentario, no dudes en dejarlo abajo.

Si tienes alguna pregunta, duda o comentario, no dudes en dejarlo abajo. Tu feedback es crucial para mejorar y ofrecer contenido que sea de tu interés.

¡Sígueme para Más!

Si quieres seguir aprendiendo y estar al día con nuevos tutoriales, te invito a seguirme en mi canal de YouTube @DavidCantonUnity. Allí encontrarás la versión en video de este tutorial y muchos más que seguro te serán de utilidad.

Te puede interesar

Por David Cantón Nadales

David Cantón Nadales es un ingeniero de software de Sevilla con más de 20 años de experiencia en la industria tecnológica. Actualmente lidera el equipo técnico de Grupo Viajes El Corte Inglés, una prominente empresa de turismo en Europa. Especializado en tecnologías como Unity y Realidad Virtual, David ha gestionado más de 100 proyectos y es un líder respetado en su campo. Además, es embajador de Samsung Dev Spain y organizador del Google Developer Group en Sevilla. Como emprendedor social, creó "Grita", una red social para apoyo psicológico, que le valió un premio de Samsung en 2022. También es autor del libro "Build Your Own Metaverse with Unity" y el inventor de "iPush", una línea de juguetes sexuales electrónicos que ganaron atención global.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.