Creación de un controlador en primera persona en Unity

Este tutorial te guiará en la creación de un sencillo controlador en primera persona en Unity. El controlador en primera persona permite a los jugadores explorar un mundo en 3D con movimientos suaves y rotación de la cámara. Usaremos scripts básicos de C# y el componente CharacterController integrado de Unity.

1. Preparando la escena

Comience por configurar el entorno de escena básico para su controlador en primera persona:

  1. En Unity, crea una nueva escena 3D.
  2. Vaya a GameObject > Objeto 3D > Plano para crear una superficie de suelo.
  3. Ajusta la escala del avión para que sea lo suficientemente grande para que el jugador pueda caminar alrededor.
  4. Vaya a GameObject > Objeto 3D > Cubo para agregar obstáculos o paredes con los que interactuar.

2. Agregar el objeto de jugador

Para representar al jugador, utilizaremos un objeto cápsula:

  • Vaya a GameObject > Objeto 3D > Cápsula para agregar una cápsula a la escena.
  • Coloque la cápsula ligeramente por encima del suelo (por ejemplo, Posición = (0, 1, 0)).
  • Cambie el nombre de la cápsula a Player.
  • Elimine el componente Capsule Collider ya que CharacterController manejará las colisiones.
  • Agregue un componente CharacterController al objeto Player seleccionando Player, luego haciendo clic en Agregar componente en el Inspector y buscando CharacterController.

3. Cómo escribir el guión del controlador en primera persona

Ahora, vamos a crear un script para manejar el movimiento del jugador y la rotación de la cámara:

  1. En la ventana Proyecto, haz clic derecho y selecciona Crear > Script de C#. Asígnale el nombre FirstPersonController.
  2. Adjunte el script al objeto Reproductor arrastrándolo desde la ventana Proyecto hasta el Reproductor en la Jerarquía.

Abra el script y reemplace el contenido con el siguiente código:

using UnityEngine;

public class FirstPersonController : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float mouseSensitivity = 2f;
    public float gravity = -9.81f;

    private CharacterController controller;
    private Vector3 velocity;
    private Transform cameraTransform;

    void Start()
    {
        controller = GetComponent();
        cameraTransform = Camera.main.transform;
        cameraTransform.position = new Vector3(transform.position.x, transform.position.y + 1.5f, transform.position.z);
        cameraTransform.parent = transform; // Attach camera to player
    }

    void Update()
    {
        // Player movement
        float moveX = Input.GetAxis("Horizontal") * moveSpeed;
        float moveZ = Input.GetAxis("Vertical") * moveSpeed;
        Vector3 move = transform.right * moveX + transform.forward * moveZ;

        controller.Move(move * Time.deltaTime);

        // Apply gravity
        if (controller.isGrounded && velocity.y < 0)
        {
            velocity.y = -2f;
        }
        velocity.y += gravity * Time.deltaTime;
        controller.Move(velocity * Time.deltaTime);

        // Camera rotation
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;

        transform.Rotate(Vector3.up * mouseX);
        cameraTransform.Rotate(Vector3.left * mouseY);
    }
}

4. Colocación de la cámara

Para la vista en primera persona, la cámara debe estar conectada al jugador:

  • Seleccione la Cámara principal en la Jerarquía.
  • Colóquelo ligeramente encima del objeto Jugador (por ejemplo, Y = 1,5).
  • Arrastre la cámara hacia el objeto Jugador en la jerarquía para convertirla en un elemento secundario del Jugador. Esto hará que siga los movimientos y las rotaciones del Jugador.

5. Configuración de entradas

El Administrador de entrada de Unity utiliza nombres de ejes predefinidos como “Horizontal” y “Vertical” para el movimiento, así como “Mouse X” y “Mouse Y” para la entrada del mouse. Estos se configuran automáticamente, pero puedes ajustar la sensibilidad en Editar > Configuración del proyecto > Administrador de entrada.

6. Probando el controlador

Ahora que el controlador en primera persona está listo, presiona el botón de reproducción para probarlo:

  • Utilice W, A, S, D para mover al jugador hacia adelante, hacia atrás y hacia los lados.
  • Mueva el ratón para girar la cámara y mirar alrededor.
  • Asegúrese de que la gravedad funcione saltando desde cualquier objeto elevado para ver si el jugador cae naturalmente.

7. Mejorando el controlador

Puedes mejorar aún más el controlador en primera persona agregando:

  • Funcionalidad de sprint incrementando la velocidad de movimiento al mantener presionada la tecla shift.
  • Lógica de salto detectando cuando el jugador presiona la barra espaciadora y aplicando una velocidad ascendente.
  • Mecánicas de trepar o agacharse para interacciones más complejas del jugador con el entorno.

Conclusión

Con este controlador básico en primera persona, ahora tienes una configuración de jugador funcional para explorar entornos 3D. Al personalizar y ampliar el script, puedes agregar más funciones e interacciones para satisfacer las necesidades de tu juego.