Movimento de acordo com a camera
Página 1 de 1
Movimento de acordo com a camera
Estou com dois sistemas para meu personagem, porém quando eu movimento ela está desigual. Alguem pode me ajudar para que o movimento do personagem seja em direção da camera quando eu me movimento
Script da Camera
Script usado para o Movimento
Script da Camera
- Código:
using UnityEngine;
using System.Collections;
public class CameraPC: MonoBehaviour
{
public Transform ponto;
public Transform target;
public float ajusteCamera;
RaycastHit hit = new RaycastHit();
Vector3 startPosition;
Quaternion startRotation;
public float distance = 5.0f;
public float xSpeed = 120.0f;
public float ySpeed = 120.0f;
public float yMinLimit = -20f;
public float yMaxLimit = 80f;
public float distanceMin = .5f;
public float distanceMax = 15f;
private Rigidbody rigidbody;
float x = 0.0f;
float y = 0.0f;
// Use this for initialization
void Start ()
{
Vector3 angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
rigidbody = GetComponent<Rigidbody>();
// Make the rigid body not change rotation
if (rigidbody != null)
{
rigidbody.freezeRotation = true;
}
startPosition = transform.position;
startRotation = transform.rotation;
}
void LateUpdate ()
{
transform.position = ponto.transform.position;
transform.rotation = ponto.rotation;
if (target)
{
x += Input.GetAxis("Mouse X") * xSpeed * distance * 0.02f;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
y = ClampAngle(y, yMinLimit, yMaxLimit);
Quaternion rotation = Quaternion.Euler(y, x, 0);
distance = Mathf.Clamp(distance - Input.GetAxis("Mouse ScrollWheel")*5, distanceMin, distanceMax);
Vector3 negDistance = new Vector3(0.0f, 0.0f, -distance);
Vector3 position = rotation * negDistance + target.position;
transform.rotation = rotation;
transform.position = position;
}
if (Physics.Linecast(target.position, transform.position, out hit))
{
transform.position = hit.point + transform.forward * ajusteCamera;
}
}
public static float ClampAngle(float angle, float min, float max)
{
if (angle < -360F)
angle += 360F;
if (angle > 360F)
angle -= 360F;
return Mathf.Clamp(angle, min, max);
}
}
Script usado para o Movimento
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
public class MovimentoPC : MonoBehaviour
{
//Velocidade de rotação
Vector3 targetRotation;
float rotationSpeed = 8;
//Velocidade
public float WalkSpeed = 20;
public float RunSpeed = 25;
public float movimento = 0;
//Pulo
public float gravity = -7;
public float jump = 10;
public bool Pulando = true;
//Componente da gravidade
Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
rb.interpolation = RigidbodyInterpolation.Extrapolate;
}
void FixedUpdate()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
float horizontalRaw = Input.GetAxisRaw("Horizontal");
float verticalRaw = Input.GetAxisRaw("Vertical");
//Controle do movimento
Vector3 input = new Vector3(horizontal, 0, vertical);
// Controle para correr
if (Input.GetKey(KeyCode.LeftShift))
{
movimento = RunSpeed;
}
else
{
movimento = WalkSpeed;
}
if (input.magnitude > 1)
{
input.Normalize();
}
//Controle da Rotação
Vector3 inputRaw = new Vector3(horizontalRaw, 0, verticalRaw);
if (inputRaw != Vector3.zero)
{
targetRotation = Quaternion.LookRotation(input).eulerAngles;
}
if (Input.GetButton("Pulo") && Pulando == true)
{
transform.position += (Vector3.up * jump * Time.deltaTime);
gravity = 0;
StartCoroutine(coldown());
}
else
{
gravity = -10;
}
if (Input.GetKey("f"))
{
Pulando = true;
}
rb.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(targetRotation.x, Mathf.Round(targetRotation.y / 45f) * 45f, targetRotation.z), Time.deltaTime * rotationSpeed);
Vector3 vel = input * movimento;
movimento = WalkSpeed;
vel.y = gravity;
rb.velocity = vel;
}
public IEnumerator coldown()
{
Pulando = true;
yield return new WaitForSeconds(0.1f);
Pulando = false;
}
}
teos626- Membro
- PONTOS : 1929
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» MOVIMENTO DO JOGADOR DE ACORDO COM A CAMERA
» Como faço para meu personagem virar de acordo com o movimento?
» Como fazer a câmera balançar de acordo com a suspensão do veículo?
» Como eu faço um modelo em 3D que se teleporta de acordo com a camera do jogador? (Vídeo)
» Movimento da Câmera No Android
» Como faço para meu personagem virar de acordo com o movimento?
» Como fazer a câmera balançar de acordo com a suspensão do veículo?
» Como eu faço um modelo em 3D que se teleporta de acordo com a camera do jogador? (Vídeo)
» Movimento da Câmera No Android
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos