[TUTORIAL] Controlador em Primeira Pessoa "compacto" FPS
3 participantes
Página 1 de 1
[TUTORIAL] Controlador em Primeira Pessoa "compacto" FPS
Olá pessoal, resolvi criar este "FPSController" manualmente para poder alocar em qualquer jogo que vocês quiserem sem ter a necessidade de utilizar os controladores padrões da Unity. Para isto basta você seguir os passos abaixo:
1 - Crie um objeto vazio e jogue uma câmera dentro dele
2 - Crie um novo script em C# com o nome "Controller", utilize o código abaixo nele e jogue o script no objeto vazio e pronto.
É um controlador extremamente simples de implementar e muito útil para quem quer um player simples.
1 - Crie um objeto vazio e jogue uma câmera dentro dele
2 - Crie um novo script em C# com o nome "Controller", utilize o código abaixo nele e jogue o script no objeto vazio e pronto.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(CharacterController))]
public class Controller : MonoBehaviour {
GameObject cameraFPS;
Quaternion rotacaoOriginalCamera;
Vector3 moveDirection = Vector3.zero;
CharacterController controller;
float rotacaoX = 0.0f, rotacaoY = 0.0f;
void Start () {
transform.tag = "Player";
cameraFPS = GetComponentInChildren (typeof(Camera)).transform.gameObject;
rotacaoOriginalCamera = cameraFPS.transform.localRotation;
controller = GetComponent<CharacterController>();
}
void Update () {
Vector3 direcaoFrente = new Vector3 (cameraFPS.transform.forward.x,0,cameraFPS.transform.forward.z);
Vector3 direcaoLado = new Vector3 (cameraFPS.transform.right.x,0,cameraFPS.transform.right.z);
direcaoFrente.Normalize ();
direcaoLado.Normalize ();
direcaoFrente = direcaoFrente * Input.GetAxis ("Vertical");
direcaoLado = direcaoLado * Input.GetAxis ("Horizontal");
Vector3 direcFinal = direcaoFrente + direcaoLado;
if (direcFinal.sqrMagnitude > 1) {
direcFinal.Normalize ();
}
if (controller.isGrounded) {
moveDirection = new Vector3 (direcFinal.x, 0, direcFinal.z);
moveDirection *= 6.0f;
if (Input.GetButton ("Jump")) {
moveDirection.y = 8.0f;
}
}
moveDirection.y -= 20.0f * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
CameraPrimeiraPessoa ();
}
void CameraPrimeiraPessoa(){
float velocidadeTimeScale = 1.0f / Time.timeScale;
rotacaoX += Input.GetAxis ("Mouse X") * 10.0f;
rotacaoY += Input.GetAxis ("Mouse Y") * 10.0f;
rotacaoX = ClampAngleFPS (rotacaoX, -360, 360);
rotacaoY = ClampAngleFPS (rotacaoY, -80, 80);
Quaternion xQuaternion = Quaternion.AngleAxis (rotacaoX, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis (rotacaoY, -Vector3.right);
Quaternion rotacFinal = rotacaoOriginalCamera * xQuaternion * yQuaternion;
cameraFPS.transform.localRotation = Quaternion.Lerp (cameraFPS.transform.localRotation, rotacFinal, Time.deltaTime*10.0f*velocidadeTimeScale);
}
float ClampAngleFPS (float angulo, float min, float max){
if (angulo < -360F) { angulo += 360F; }
if (angulo > 360F) { angulo -= 360F; }
return Mathf.Clamp (angulo, min, max);
}
}
É um controlador extremamente simples de implementar e muito útil para quem quer um player simples.
Re: [TUTORIAL] Controlador em Primeira Pessoa "compacto" FPS
Qual botão uso para trocar a camera, e etc?
gabrieldeelay- Iniciante
- PONTOS : 2019
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Controlador em Primeira Pessoa "compacto" FPS
gabrieldeelay escreveu:Qual botão uso para trocar a camera, e etc?
Neste código não há recurso de várias câmeras, pois é um FPSController.
Mas você pode usar um asset free para usar várias câmeras:
https://assetstore.unity.com/packages/tools/camera/ms-advanced-camera-controller-81759
Re: [TUTORIAL] Controlador em Primeira Pessoa "compacto" FPS
Acho que ("t") ficaria legal
Andrew lameira batista- Iniciante
- PONTOS : 1668
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Sistema de Controlador De Primeira Pessoa Com Som De Passos Aleatorios
» [TUTORIAL] Sistema de câmera em primeira pessoa SIMPLES
» [TUTORIAL] Movimento de camera em primeira pessoa e sons de passos ou HeadBob
» [TUTORIAL] Controle de personagem em primeira pessoa + pulo para android!
» Animação em primeira pessoa
» [TUTORIAL] Sistema de câmera em primeira pessoa SIMPLES
» [TUTORIAL] Movimento de camera em primeira pessoa e sons de passos ou HeadBob
» [TUTORIAL] Controle de personagem em primeira pessoa + pulo para android!
» Animação em primeira pessoa
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos