[TUTORIAL] Sistema de câmera em primeira pessoa SIMPLES
Página 1 de 1
[TUTORIAL] Sistema de câmera em primeira pessoa SIMPLES
Oi pessoal, tudo bem? Hoje eu vim aqui pra ensinar a vocês implementarem um sistema de câmera em primeira pessoa, simples e que usa o Input System, então vamos lá...
Primeiro você vai ter que instalar o Input System no seu projeto, para você fazer isso, é só seguir os seguintes passos...
1º ) Vá na aba Window -> Package Manager.
2º ) No Package Manager, na parte superior vai ter uma aba Packages, você vai clicar e selecionar Unity Registry.
3º ) Em Unity Registry você vai rolar para baixo até encontrar Input System.
4º ) Selecione o Input System e aperte o botão Install que se localiza na parte inferior direita da Aba.
Agora que você, já tem o Input System instalado, tá na hora de configurar os comandos
1º ) Vá na aba Project, e clique com o botão direito Create -> Input Actions, e coloque o nome que você quiser
2º ) Dê duplo clique no Input Action criado
3º ) Crie um Action Map, clicando no ( + ) do lado do nome Action Maps, e coloque o nome que você quiser
4º ) Na aba Actions, você vai selecionar o "New Action", e aperte F2 e digite o nome que você quiser (Eu recomendo Camera Look)
5º ) Após mudar o nome, selecione a Action e vá na aba Action Properties e mude o Action Type, de Button para Value
6º ) Agora mude o Control Type de Button para Vector2
7º ) Expanda sua Action clicando na setinha do lado da mesma
8º ) Selecione a No Binding e na aba Action Properties selecione o PATH(A tecla que será linkada a essa action) no nosso caso selecione Mouse -> Delta (Para Mouse), ou selecione Gamepad -> Right Stick (Para Gamepads)
9º ) Depois de ter feito tudo isso, feche a aba Input Actions, e na aba Hierarchy clique com o botão direito do mouse Create -> Create Empty e coloque o nome que você quiser (Eu recomendo Input Manager)
10º ) Selecione o GameObject criado, e na aba Inspector clique em Add Component -> Player Input
11º ) No Player Input, coloque o Input Action que foi criado no 1º passo na variável Actions
12º ) Ainda no Player Input, mude o Behaviour de Send Messages para Invoke Unity Events
E pronto, o comando da câmera foi criado, agora você vai criar um Script com o nome de "FirstPersonCamera" e adicione o seguinte Script
O Script está comentado em inglês, que é como eu programo, e recomendo todos fazerem isso
Com o script criado:
1º ) Crie um GameObject com o nome de Camera Holder
2º ) Adicione sua câmera dentro do Camera Holder, e defina sua posição para (0, 0, 0)
3º ) Adicione o Script criado ao Camera Holder (Não adicione diretamente na câmera)
4º ) No Camera Holder, você vai anexar sua câmera na variável FP_Camera
5º ) Crie outro GameObject com o nome de Camera Position (O Camera Holder vai seguir ele) e anexe ele a variável Camera Position
6º ) Agora altere todas as variáveis ao seu gosto
7º ) Vá no Input Manager (Objeto criado para armazenar o Player Input) -> Player Input, Expanda a aba Events, e Expanda a sua Action Map, na aba Camera Look, clique no ( + ) e anexe o Camera Holder e substitua o No Function para FirstPersonCamera -> SetCameraLook
E pronto está tudo configurado, e pronto para ser usado
Lembre-se de não colocar o Camera Holder dentro do seu Player, sempre coloque o Player Position dentro do Player (Isso evita bugs de câmera como o Jitter)
Primeiro você vai ter que instalar o Input System no seu projeto, para você fazer isso, é só seguir os seguintes passos...
1º ) Vá na aba Window -> Package Manager.
2º ) No Package Manager, na parte superior vai ter uma aba Packages, você vai clicar e selecionar Unity Registry.
3º ) Em Unity Registry você vai rolar para baixo até encontrar Input System.
4º ) Selecione o Input System e aperte o botão Install que se localiza na parte inferior direita da Aba.
Agora que você, já tem o Input System instalado, tá na hora de configurar os comandos
1º ) Vá na aba Project, e clique com o botão direito Create -> Input Actions, e coloque o nome que você quiser
2º ) Dê duplo clique no Input Action criado
3º ) Crie um Action Map, clicando no ( + ) do lado do nome Action Maps, e coloque o nome que você quiser
4º ) Na aba Actions, você vai selecionar o "New Action", e aperte F2 e digite o nome que você quiser (Eu recomendo Camera Look)
5º ) Após mudar o nome, selecione a Action e vá na aba Action Properties e mude o Action Type, de Button para Value
6º ) Agora mude o Control Type de Button para Vector2
7º ) Expanda sua Action clicando na setinha do lado da mesma
8º ) Selecione a No Binding e na aba Action Properties selecione o PATH(A tecla que será linkada a essa action) no nosso caso selecione Mouse -> Delta (Para Mouse), ou selecione Gamepad -> Right Stick (Para Gamepads)
9º ) Depois de ter feito tudo isso, feche a aba Input Actions, e na aba Hierarchy clique com o botão direito do mouse Create -> Create Empty e coloque o nome que você quiser (Eu recomendo Input Manager)
10º ) Selecione o GameObject criado, e na aba Inspector clique em Add Component -> Player Input
11º ) No Player Input, coloque o Input Action que foi criado no 1º passo na variável Actions
12º ) Ainda no Player Input, mude o Behaviour de Send Messages para Invoke Unity Events
E pronto, o comando da câmera foi criado, agora você vai criar um Script com o nome de "FirstPersonCamera" e adicione o seguinte Script
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class FirstPersonCamera : MonoBehaviour
{
private Vector2 CurrentCameraRotation;
private Vector2 CameraLookInput;
[Header("Attachments")]
[Tooltip("Attach the camera component")] public Camera FP_Camera;
[Tooltip("Attach the camera's position")] public Transform CameraPosition;
[Header("Camera Settings")]
[Tooltip("The camera sensitivity on x-axis")] public float SensitivityX;
[Tooltip("The camera sensitivity on y-axis")] public float SensitivityY;
[Tooltip("The max and min camera angle")] public float CameraClamp;
[Header("Camera Properties")]
[Tooltip("The camera's field of view")] public float FOV;
public void SetCameraLook(InputAction.CallbackContext value)
{
CameraLookInput = value.ReadValue<Vector2>(); // Receive the Camera Look from Action Map, and set on CameraLookInput variable.
}
private void Awake()
{
Cursor.visible = false; // The cursor will be not visible in the game.
Cursor.lockState = CursorLockMode.Locked; // The cursor will be moveless in the game.
}
private void Update()
{
//Set the camera rotation
CurrentCameraRotation.x += CameraLookInput.x * SensitivityX * Time.deltaTime;
CurrentCameraRotation.y += CameraLookInput.y * SensitivityY * Time.deltaTime;
CurrentCameraRotation.y = Mathf.Clamp(CurrentCameraRotation.y, -CameraClamp, CameraClamp);
transform.eulerAngles = new Vector3(CurrentCameraRotation.y, CurrentCameraRotation.x, 0);
//Set the camera position
transform.position = CameraPosition.position;
//Set the camera's properties
FP_Camera.fieldOfView = FOV;
}
}
O Script está comentado em inglês, que é como eu programo, e recomendo todos fazerem isso
Com o script criado:
1º ) Crie um GameObject com o nome de Camera Holder
2º ) Adicione sua câmera dentro do Camera Holder, e defina sua posição para (0, 0, 0)
3º ) Adicione o Script criado ao Camera Holder (Não adicione diretamente na câmera)
4º ) No Camera Holder, você vai anexar sua câmera na variável FP_Camera
5º ) Crie outro GameObject com o nome de Camera Position (O Camera Holder vai seguir ele) e anexe ele a variável Camera Position
6º ) Agora altere todas as variáveis ao seu gosto
7º ) Vá no Input Manager (Objeto criado para armazenar o Player Input) -> Player Input, Expanda a aba Events, e Expanda a sua Action Map, na aba Camera Look, clique no ( + ) e anexe o Camera Holder e substitua o No Function para FirstPersonCamera -> SetCameraLook
E pronto está tudo configurado, e pronto para ser usado
Lembre-se de não colocar o Camera Holder dentro do seu Player, sempre coloque o Player Position dentro do Player (Isso evita bugs de câmera como o Jitter)
LúcioHenrique098- Avançado
- PONTOS : 2193
REPUTAÇÃO : 31
Idade : 20
Áreas de atuação : Intermediário em Programação, Iniciante em Modelagem
Respeito as regras :
Tópicos semelhantes
» Sistema De Camera De Primeira Pessoa de um Veiculo Para Android
» [TUTORIAL] Movimento de camera em primeira pessoa e sons de passos ou HeadBob
» [TUTORIAL] Sistema de Controlador De Primeira Pessoa Com Som De Passos Aleatorios
» [TUTORIAL] Camera em terceira pessoa simples
» Câmera primeira pessoa
» [TUTORIAL] Movimento de camera em primeira pessoa e sons de passos ou HeadBob
» [TUTORIAL] Sistema de Controlador De Primeira Pessoa Com Som De Passos Aleatorios
» [TUTORIAL] Camera em terceira pessoa simples
» Câmera primeira pessoa
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos