Criando um controlador de primeira pessoa no Unity

Este tutorial irá guiá-lo através da construção de um controlador simples de primeira pessoa em Unity. O controlador de primeira pessoa permite que os jogadores explorem um mundo 3D com movimento suave e rotação de câmera. Usaremos scripts básicos em C# e o componente CharacterController integrado do Unity.

1. Preparando a cena

Comece configurando o ambiente básico da cena para seu controle em primeira pessoa:

  1. Em Unity, crie uma nova cena 3D.
  2. Vá para GameObject > 3D Object > Plane para criar uma superfície de solo.
  3. Ajuste a escala do avião para torná-lo grande o suficiente para o jogador andar por ele.
  4. Vá para GameObject > 3D Object > Cube para adicionar obstáculos ou paredes para interagir.

2. Adicionando o objeto Player

Para representar o jogador, usaremos um objeto cápsula:

  • Vá para GameObject > 3D Object > Capsule para adicionar uma cápsula à cena.
  • Posicione a cápsula ligeiramente acima do solo (por exemplo, Posição = (0, 1, 0)).
  • Renomeie a cápsula para Jogador.
  • Remova o componente Capsule Collider, pois o CharacterController manipulará colisões.
  • Adicione um componente CharacterController ao objeto Player selecionando o Player, clicando em Adicionar Componente no Inspetor e procurando por CharacterController.

3. Escrevendo o script do controlador em primeira pessoa

Agora, vamos criar um script para lidar com o movimento do jogador e a rotação da câmera:

  1. Na janela Projeto, clique com o botão direito e selecione Criar > C# Script. Nomeie-o como FirstPersonController.
  2. Anexe o script ao objeto Player arrastando-o da janela Projeto para o Player na Hierarquia.

Abra o script e substitua o conteúdo pelo seguinte 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. Anexando a câmera

Para a visão em primeira pessoa, a câmera precisa estar acoplada ao jogador:

  • Selecione Câmera Principal na Hierarquia.
  • Posicione-o ligeiramente acima do objeto Player (por exemplo, Y = 1,5).
  • Arraste a Câmera para o objeto Player na Hierarquia para torná-la filha do Player. Isso fará com que ela siga os movimentos e rotações do jogador.

5. Configurando entradas

O Input Manager do Unity usa nomes de eixo predefinidos como “Horizontal” e “Vertical” para movimento, assim como “Mouse X” e “Mouse Y” para entrada do mouse. Eles são configurados automaticamente, mas você pode ajustar a sensibilidade em Editar > Configurações do Projeto > Input Manager.

6. Testando o controlador

Agora que o controle em primeira pessoa está pronto, aperte o botão play para testá-lo:

  • Use W, A, S, D para mover o jogador para frente, para trás e para os lados.
  • Mova o mouse para girar a câmera e olhar ao redor.
  • Certifique-se de que a gravidade funciona descendo de qualquer objeto elevado para ver se o jogador cai naturalmente.

7. Melhorando o Controlador

Você pode melhorar ainda mais o controle em primeira pessoa adicionando:

  • Funcionalidade de corrida aumentando a velocidade do movimento ao segurar a tecla Shift.
  • Lógica de salto detectando quando o jogador pressiona a barra de espaço e aplicando uma velocidade ascendente.
  • Mecânica de escalada ou agachamento para interações mais complexas do jogador com o ambiente.

Conclusão

Com este controle básico de primeira pessoa, você agora tem uma configuração de jogador funcional para explorar ambientes 3D. Ao personalizar e estender o script, você pode adicionar mais recursos e interações para atender às necessidades do seu jogo.