Tá com um delay no movimento do personagem, é mais notável quando solta a tecla de movimentação, o personagem demora um pouco para parar de movimentar
Segue os códigos
Controla o Jogador
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ControlaJogador : MonoBehaviour, IMatavel
{
Vector3 direcao;
public LayerMask mascara;
public GameObject texto;
public ControlaInterface scriptControlaInterface;
public AudioClip SomDano;
private MovimentoJogador meuMovimentoJogador;
private AnimPersonagem animacaoJogador;
public Status StatusJogador;
private void Start()
{
Time.timeScale = 1;
meuMovimentoJogador = GetComponent<MovimentoJogador>();
animacaoJogador = GetComponent<AnimPersonagem>();
StatusJogador = GetComponent<Status>();
}
void Update()
{
float eixoX = Input.GetAxis("Horizontal");
float eixoZ = Input.GetAxis("Vertical");
direcao = new Vector3(eixoX, 0, eixoZ);
animacaoJogador.Movimentar(direcao.magnitude);
if(StatusJogador.Vida <= 0)
{
if (Input.GetButtonDown("Fire1"))
{
SceneManager.LoadScene("game");
}
}
}
private void FixedUpdate()
{
meuMovimentoJogador.Movimentar(direcao, StatusJogador.Velocidade);
meuMovimentoJogador.RotacaoJogador(mascara);
}
public void TomarDano (int dano)
{
StatusJogador.Vida -= dano;
scriptControlaInterface.AtulziarSliderVidaJogador();
ControlaAudio.instancia.PlayOneShot(SomDano);
if (StatusJogador.Vida <= 0)
{
Morrer();
}
}
public void Morrer()
{
Time.timeScale = 0;
texto.SetActive(true);
}
}
Controla a movimentação
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovimentoPersonagem : MonoBehaviour
{
private Rigidbody meuRigidbody;
private void Awake ()
{
meuRigidbody = GetComponent<Rigidbody>();
}
public void Movimentar(Vector3 direcao, float velocidade)
{
meuRigidbody.MovePosition(meuRigidbody.position + direcao.normalized * velocidade * Time.deltaTime);
}
public void Rotacionar(Vector3 direcao)
{
Quaternion novaRotacao = Quaternion.LookRotation(direcao);
GetComponent<Rigidbody>().MoveRotation(novaRotacao);
}
}