Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Força sendo aplicada no avião quando reinicia

Olá. No momento que estou reiniciando o jogo, o meu avião está dando um salto inicial. O que pode ser?

No Diretor eu tenho o código do reiniciar, está tudo sendo executado, os obstáculos estão sendo destruídos, o painel está voltando a ficar false e o Reiniciar do avião está sendo chamado.

    public void ReiniciarJogo()
    {
        PainelGameOver.SetActive(false); 
        DestruirObstaculos();
        aviao.Reiniciar(); 
        Time.timeScale = 1;
    }

Já no avião, quando eu tenho o gameover sendo executado na colisão, a física está deixando de funcionar. Ao executar o Reiniciar(), ele está voltando para a posição inicial, mas já com um salto.


    public void Reiniciar()
    {
        this.transform.position = PosicaoInicial;
        fisica.simulated = true;
    }

Valeu!!!

2 respostas
solução!

Oi Paulo, o que acontece é que quando pedimos para o rigidbody parar de simular a física do jogo ele ainda mantém o último estado que ele calculou, assim se estamos parando o jogo por causa do "pause" ele consegue voltar do ponto em que estava e não causa uma estranheza para o jogador.

Nesse caso onde queremos resetar o estado dele mesmo precisamos pedir para ele não aplicar mais as forças no avião. No seu caso como ele está jogando o avião para cima vc precisa zerar a Velocity dele ( https://docs.unity3d.com/ScriptReference/Rigidbody2D.html )

Se não me engano faço isso em um vídeo seguinte do curso

Perfeito. Obrigado, funcionou sim.