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

Personagem desliza sozinho depois de atirar.

Quando o personagem atira ele fica deslizando como se um vento estivesse carregando ele. Quando inicio o jogo sem atirar o personagem se movimenta normalmente. Alguém sabe a possível origem desse problema?

Vou deixar o código abaixo, mas não acredito que o erro esteja no código.

BALA

public class Bala : MonoBehaviour{

    public float VelocidadeBala = 20;

    void FixedUpdate(){
        GetComponent<Rigidbody>().MovePosition(GetComponent<Rigidbody>().position + transform.forward * VelocidadeBala * Time.deltaTime);
    }
}

CONTROLA ARMA

public class ControlaArma : MonoBehaviour{
    public GameObject Bala;
    public GameObject CanoDaArma;

    void Start(){

    }

    void Update(){
        if (Input.GetButtonDown("Fire1")){
            //Instantiate cria novos objetos. Nesse caso, as balas dos tiros
            Instantiate(Bala, CanoDaArma.transform.position, CanoDaArma.transform.rotation);
        }
    }
}

CONTROLA JOGADOR

public class ControlaJogador : MonoBehaviour{

    public float Velocidade = 10;
    Vector3 direcao;

    void Update(){

        float eixoX = Input.GetAxis("Horizontal");
        float eixoZ = Input.GetAxis("Vertical");

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

        //Com o GetComponent, a linha abaixo se torna desnecessária. Esse código faz com que a tela não fique tremendo quando o personagem colide
        //transform.Translate(direcao * Velocidade * Time.deltaTime);

        if(direcao != Vector3.zero){
            GetComponent<Animator>().SetBool("Movendo", true);
        } else {
            GetComponent<Animator>().SetBool("Movendo", false);
        }
    }

    void FixedUpdate(){
        //É executado 50 frames por segundo
        GetComponent<Rigidbody>().MovePosition(GetComponent<Rigidbody>().position - (direcao * Velocidade * Time.deltaTime));
    }
}
1 resposta
solução!

Oi, Paulo, tudo bem?

Joga o seu CanoDaArma um pouco mais pra frente, provavelmente a bala tá instanciando ainda dentro do colisor da personagem e isso tá atrapalhando a fisica.

Mas uma solução, menos ortodoxa talvez seja pegar o Rigidbody da personagem e aumentar a massa pra tipo 100, isso faz com que ela seja bem mais pesada que a bala.

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