1. Creando un Juego 3D

Hoy vamos a crear nuestro “Primer Juego 3D” en Unity 🙂

Para ser más precisos e ir conociendo los términos que se usan dentro del mundo del desarrollo de videojuegos; en este tutorial vamos a crear un “Controlador de Personaje en Tercera Persona” usando las herramientas que ofrece el motor de videojuegos Unity 3D.

Tutorial de Unity Nivel: Principiante.

1.1 Creando un Nuevo Proyecto.

Vamos a crear un nuevo proyecto en Unity versión 6:

  1. Ejecutamos Unity Hub en nuestro ordenador.
  2. En la pantalla de inicio hacemos clic en el botón “New project”.
  3. Después seleccionamos la opción “Universal 3D”.
  4. En el campo “Project name” vamos a escribir el nombre que más nos guste para nuestro proyecto, nosotros recomendamos “3D_FirstGame”.
  5. En el campo “Location” vamos a seleccionar donde queremos que se guarde nuestro proyecto en nuestro ordenador.
  6. Hacemos clic en “Create project“.
“Publicidad” (los Anuncios nos Ayudan a Mantener este “Gran Sitio” 😀 )

1.2 Los Preparativos.

Como buena práctica, vamos a crear las carpetas que contendrán los archivos de nuestro proyecto en Unity.

Dentro de la pestaña “Project” y dentro de la carpeta “Assets” vamos a crear la carpeta “3DFirstGame” (haciendo clic derecho sobre “Assets” seleccionamos “Create” y después “Folder“). Después, siguiendo los mismos pasos, dentro de “3DFirstGame“vamos a crear las carpetas “Materials“, “Scripts” y “Scenes“, quedando algo así:

Ahora, dentro de la carpeta “Materials” vamos a crear los archivos de materiales que nos ayudarán a asignar diferentes colores a los objetos de nuestro juego. Esto lo lograremos haciendo clic derecho sobre la carpeta “Materials“, seleccionando “Create” y después “Material“. Esto lo haremos tres veces con la finalidad de crear los tres archivos de materiales “Ground_Mat“, “Rocks_Mat” y “Player_Mat” y a cada uno le asignaremos los colores verde, cafe y anaranjado respectivamente.

Como siguiente paso, vamos a crear la escena del juego donde vamos a trabajar. Para logarlo, vamos a hacer clic derecho sobre nuestra carpeta recién creada “Scenes” y vamos a seleccionar “Create“, “Scene” y después nuevamente “Scene“. Al archivo generado los vamos a nombrar “3DFirstGame“.

En nuestra carpeta “Scripts” vamos a crear el archivo de código “PlayerController” (haciendo clic derecho sobre la carpeta “Scripts“, después “Create“, “Scripting” y por último “MonoBehaviour Script“.

Por último, vamos a añadir el paquete de activos “Cinemachine” a nuestro proyecto. Esto lo haremos haciendo clic sobre la pestaña “Package Manager“, seleccionando “Unity Registry” después “Cinemachine” y por último oprimiendo “Install“.

“Publicidad” (los Anuncios nos Ayudan a Mantener este “Gran Sitio” 😀 )

1.3 ¡Manos a la obra!

Comencemos abriendo nuestra escena “3DFirstGame” para trabajar en ella.

Primero, vamos a crear un plano grande que servirá de piso para que nuestro personaje camine sobre este. Dentro de “Hierarchy” vamos a crear el objeto 3D “Plane” (clic derecho sobre un espacio vacío dentro de “Hierarchy“, seleccionamos “3D Object“, después “Plane“) y lo llamaremos “MyGround“.

Al objeto “MyGround” le vamos a asignar el material “Ground_Mat“, también le vamos a asignar una escala de valor “10” sobre los ejes “X y Z” y por último le asignaremos la capa “ground3D” en la sección “Layer” (primero tendrás que hacer clic en “Add Layer” para añadir “ground3D” en el espacio vacío “User Layer 6“).

Para crear a nuestro personaje primero vamos a añadir otro objeto 3D a la escena, el objeto que vamos a crear será una cápsula a la que llamaremos “Player” (clic derecho sobre un espacio vacío dentro de “Hierarchy“, seleccionamos “3D Object“, después “Capsule“). A este objeto le asignaremos el material “Player_Mat”, le asignaremos el tag “Player” y ubicaremos el objeto en la posición “1.5” sobre el eje “Y“.

Continuando con nuestro personaje, hacemos clic derecho sobre este, seleccionamos “Create Empty” y lo llamaremos “Ground_Check“, con esto se añadirá un nuevo objeto que nos ayudará a detectar cuando nuestro personaje este tocando el piso, por ello lo colocaremos cercano a la parte inferior de nuestro personaje (en la posición “-1” sobre el eje “Y“).

A nuestro objeto “Player” le vamos a asignar dos componentes, uno de ellos es “Character Controller” y el otro es nuestro archivo de código “PlayerController“.

El componente “Character Controller” es un componente de Unity que nos ayudará a facilitar el proceso de hacer que nuestro personaje tenga movimiento y que es muy útil cuando hacemos un juego básico de un personaje en 3D.

 

“Publicidad” (los Anuncios nos Ayudan a Mantener este “Gran Sitio” 😀 )

1.4 El Código.

Vamos a abrir nuestro archivo “PlayerController” y aplicaremos el siguiente código.

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float moveSpeed = 5f; // Velocidad de movimiento
    public float jumpForce = 5f; // Fuerza de salto
    public float gravity = -9.81f; // Fuerza de Gravedad
    public Transform cameraTransform; // Asigna el componente "Transform" de la cámara en el inspector para conocer su ubicación

    private CharacterController controller;
    private Vector3 velocity;
    private bool isGrounded;

    public Transform groundCheck; // Objeto para verificar si está en el suelo
    public float groundDistance = 0.2f; // Distancia para verificar el suelo
    public LayerMask groundLayer; // Capa que representa el suelo

    void Start()
    {
        //Asignamos el componente a nuestro código
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // Verificar si el personaje está en el suelo
        isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundLayer);

        if (isGrounded && velocity.y < 0)
        {
            velocity.y = -2f; // Asegurarse de que el personaje esté en el suelo
        }

        // Obtener la entrada y/o controles del jugador
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");

        // Calcular dirección de movimiento relativa a la cámara
        Vector3 moveDirection = CalculateCameraRelativeMovement(horizontal, vertical);

        // Mover al personaje en la dirección deseada
        controller.Move(moveDirection * moveSpeed * Time.deltaTime);

        // Saltar
        if (Input.GetButtonDown("Jump") && isGrounded)
        {
            velocity.y = Mathf.Sqrt(jumpForce * -2f * gravity);
        }

        // Aplicar la fuerza de gravedad
        velocity.y += gravity * Time.deltaTime;
        controller.Move(velocity * Time.deltaTime);
    }

     // Calcula la dirección de movimiento basada en la rotación de la cámara
    private Vector3 CalculateCameraRelativeMovement(float horizontal, float vertical)
    {
        if (cameraTransform == null) return Vector3.zero;

        // Obtener vectores de dirección de la cámara (ignorando rotación vertical)
        Vector3 cameraForward = cameraTransform.forward;
        Vector3 cameraRight = cameraTransform.right;
        cameraForward.y = 0f; // Aplanar el vector para movimiento horizontal
        cameraRight.y = 0f;
        cameraForward.Normalize();
        cameraRight.Normalize();

        // Combinar direcciones con la entrada del jugador
        return (cameraForward * vertical + cameraRight * horizontal).normalized;
    }
}

Este código permite mover a nuestro personaje usando las teclas “W, A, S, D” y hacerlo saltar usando la tecla “Space” o mediante un control externo tipo “Gamepad” (debido a que ya vienen configurados en esta versión de Unity).

Damos guardar a nuestro código y regresamos al editor de Unity para asignar las referencias necesarias y disponibles en este momento (el objeto “Ground_Check” y la capa “ground3D” en las secciones requeridas del  componente de nuestro código).

“Publicidad” (los Anuncios nos Ayudan a Mantener este “Gran Sitio” 😀 )

1.5 La Cámara y los Obstáculos.

Para que sea un controlador en tercera persona, necesitamos una cámara que muestre a nuestro personaje en “Tercera Persona”, es decir, que nos permita verlo e irlo siguiendo mientras lo movemos.

Para esto vamos a usar los componentes “Cinemachine” versión 3 disponibles en Unity 6.

Primero, al objeto “Main Camera” de nuestra escena le vamos a añadir el componente “Cinemachine Brain”.

Después, dentro de “Hierarchy” vamos a crear una cámara de Cinemachine que pueda enfocar y seguir a nuestro personaje, para lograrlo, hacemos clic derecho sobre un espacio vacío dentro de “Hierarchy” y seleccionamos “Cinemachine“, “Targeted Cameras” y después “FreeLook Camera“. En este nuevo objeto creado buscamos el componente “Cinemachine Camera” y le asignamos nuestro objeto “Player” en la sección “Tracking Target“.

Esta cámara que acabamos de crear es la referencia faltante en nuestro código “PlayerController”, así que lo vamos a asignar para que este quede completo.

Para finalizar, vamos a crear algunos obstáculos para nuestro personaje. Para ello añadimos algunos objetos 3D tipo “Cube” a los cuales les asignaremos el material “Rocks_Mat” y la capa “ground3D“. Es recomendable generarlos de distintos tamaños para que nuestro personaje pueda saltar sobre ellos o apoyarse en alguno para llegar a otro más grande.

¡Ahora sí, el Momento ha llegado, Oprime Play y disfruta tu Primer Juego 3D 🙂 ! 

Ejercicios.

Para reforzar lo aprendido, es necesario practicarlo, por ello intenta realizar los siguientes ejercicios:

  1. Modifica valores en el componente “Player Controller” para que tu personaje se mueva más rápido, salte más lato y caiga más rápido.
  2. Modifica valores en los componentes “Cinemachine Orbital Follow” y “Cinemachine Rotation Composer” que se encuentran en el objeto “FreeLook Camera” para que experimentes con distintos enfoques de tu cámara en tercera persona.

Este Tutorial de Unity termina aquí. Acompáñanos en el siguiente tutorial donde añadiremos más funcionalidades a “Tu Primer Juego 3D”.

Siguiente Tutorial de Unity:

“Publicidad” (los Anuncios nos Ayudan a Mantener este “Gran Sitio” 😀 )

Unity Tutorial: “Tu Primer Juego 3D


1. Creando un Juego 3D

Ver más Tutoriales

 

“Ads”

¿Te resultó útil este Tutorial?
¡¡Recuerda, los Anuncios nos Ayudan a Mantener este “Gran Sitio” 😀 !!

Comparte el Post
Posted in PrimerJuego3D.

Deja un comentario

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.