sistema de câmera + movimentação do player
Página 1 de 1
sistema de câmera + movimentação do player
olá queria ajuda com este script, quero que a câmera rotacione ate certo ponto do eixo x e y para que nao vire totalmente pra manter o enquadro, e que toda vez que relacione quando eu mover o personagem volte para as posições inicias da rotação.. é possível?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(CharacterController))]
public class Movimentaçao : MonoBehaviour
{
public float speed = 6.0f;
float _velocidade;
float _girar;
Vector3 moveDirection = Vector3.zero;
CharacterController controller;
GameObject cameraFPS;
float rotacaoX = 0.0f, rotacaoY = 0.0f;
void Start ()
{
_velocidade = 20.0F;
_girar = 60.0F;
transform.tag = "Player";
cameraFPS = GetComponentInChildren (typeof(Camera)).transform.gameObject;
cameraFPS.transform.localPosition = new Vector3 (0, 1, 0);
cameraFPS.transform.localRotation = Quaternion.identity;
controller = GetComponent<CharacterController> ();
}
// Update is called once per frame
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;
float translate = (Input.GetAxis ("Vertical") * _velocidade) * Time.deltaTime;
float rotate = (Input.GetAxis ("Horizontal") * _girar) * Time.deltaTime;
transform.Translate (0, 0, translate);
transform.Rotate (0, rotate, 0);
if (direcFinal.sqrMagnitude > 1) {
direcFinal.Normalize ();
}
if (controller.isGrounded) {
moveDirection = new Vector3 (direcFinal.x, 0, direcFinal.z);
moveDirection *= speed;
if (Input.GetButton ("Jump")) {
moveDirection.y = 8.0f;
}
}
moveDirection.y -= 20.0f * Time.deltaTime;
controller.Move (moveDirection * Time.deltaTime);
CameraPrimeiraPessoa ();
}
void CameraPrimeiraPessoa()
{
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 = Quaternion.identity * xQuaternion * yQuaternion;
cameraFPS.transform.localRotation = Quaternion.Lerp (cameraFPS.transform.localRotation, rotacFinal, Time.deltaTime * 10.0f);
}
float ClampAngleFPS(float angulo, float min, float max)
{
if (angulo < -360)
{
angulo += 360;
}
if (angulo > 360)
{
angulo -= 360;
}
return Mathf.Clamp (angulo, min, max);
}
}
Pkneves- MembroAvançado
- PONTOS : 1384
REPUTAÇÃO : 11
Respeito as regras :
Tópicos semelhantes
» COMO FAZER CAMERA ORBITAR O PLAYER/CAMERA LIVRE!
» CÂMERA ORBITAL, CÂMERA ORBITAR O PLAYER
» movimentação e camera?
» Movimentaçao player
» SCRIPT DE MOVIMENTAÇÃO E CÂMERA
» CÂMERA ORBITAL, CÂMERA ORBITAR O PLAYER
» movimentação e camera?
» Movimentaçao player
» SCRIPT DE MOVIMENTAÇÃO E CÂMERA
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos