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:
- Em Unity, crie uma nova cena 3D.
- Vá para GameObject > 3D Object > Plane para criar uma superfície de solo.
- Ajuste a escala do avião para torná-lo grande o suficiente para o jogador andar por ele.
- 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:
- Na janela Projeto, clique com o botão direito e selecione Criar > C# Script. Nomeie-o como FirstPersonController.
- 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.