Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Pequena duvida quanto ao movimento

Não sei se é só no meu código. Mas notei que quando movimento meu jogador e solto a tecla ele continua andando um pouco, como se fosse um atraso.

Seria isso uma consequência de movimentarmos usando a física? Ou tem algo diferente no meu código mesmo?

Vou deixar meu código aqui qualquer coisa. Não vejo isso como um grande problema mas queria apenas ter certeza.

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement;

public class Script_Jogador : MonoBehaviour , Interface_Matavel { //Variaveis Jogador Vector3 direcao; public AudioClip SomDeDano; public Script_Interface_Controle ScriptInterfaceControle; public Script_Status status; private Script_Movimento_Jogador movimentar; private Script_Animação animar;

public GameObject TextoGameOver;

public LayerMask MascaraChao;

// Start is called before the first frame update
void Start()
{

    movimentar = GetComponent<Script_Movimento_Jogador>();
    animar = GetComponent<Script_Animação>();
    status = GetComponent<Script_Status>();
    Time.timeScale = 1;
}

// Update is called once per frame
void Update()
{

    //Movimentação
    float eixoX = Input.GetAxis("Horizontal");
    float eixoZ = Input.GetAxis("Vertical");

    direcao = new Vector3(eixoX, 0, eixoZ);


    //Animações
    animar.Movimentar(direcao.magnitude);

    if (status.Vida <= 0)
    {
        if (Input.GetButtonDown("Fire1"))
        {
            SceneManager.LoadScene("Main_Game");
        }
    }

}

void FixedUpdate()
{
    //Movimentação e Rotação por outro código e herança
    movimentar.Movendo(direcao, status.Velocidade);

    movimentar.GirandoJogador(MascaraChao);

}

public void TomarDano(int dano)
{
    status.Vida -= dano;
    ScriptInterfaceControle.AtualizarSliderVidaJogador();
    Script_Audio_Controle.instancia.PlayOneShot(SomDeDano);

    if (status.Vida <= 0)
    {
        Morrer();
    }

}

public void Morrer()
{
    Time.timeScale = 0;
    TextoGameOver.SetActive(true);
}

}

1 resposta
solução!

Olá, tudo bem?

O GetAxis é um pouco soft ele faz a transição "devagar" até o 0. Se você trocar por GetAxisRaw e aumentar um pouco a massa do jogador o problema deve solucionar :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software