Quando os inimigos me "matam" e reinicio o jogo, eu logo morro de novo, mesmo com os inimigos atacando de longe, além de eu não poder rotacionar meu personagem
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Quando os inimigos me "matam" e reinicio o jogo, eu logo morro de novo, mesmo com os inimigos atacando de longe, além de eu não poder rotacionar meu personagem
Olá, Otávio!
Pelo que entendi, você está com problemas ao reiniciar o jogo, onde o inimigo "mata" o personagem mesmo estando longe e também não consegue rotacionar o personagem. Vamos tentar resolver isso juntos!
Primeiramente, vamos verificar a questão do inimigo "matando" o personagem de longe. Isso pode estar acontecendo por conta de algum problema no código que controla a distância entre o inimigo e o personagem. No seu código ControlaInimigo.cs, você tem um trecho que verifica a distância entre o inimigo e o jogador:
float distancia = Vector3.Distance(transform.position, Jogador.transform.position);
if (distancia > 2.5)
{
GetComponent<Rigidbody>().MovePosition
(GetComponent<Rigidbody>().position +
direcao.normalized * Velocidade * Time.deltaTime);
GetComponent<Animator>().SetBool("Atacando", false);
}
else
{
GetComponent<Animator>().SetBool("Atacando", true);
}
Nesse trecho, o código verifica se a distância entre o inimigo e o jogador é maior que 2.5. Se for, o inimigo se move em direção ao jogador e a animação de ataque é desativada. Se a distância for menor ou igual a 2.5, a animação de ataque é ativada.
Verifique se o valor 2.5 está adequado para o seu jogo. Talvez, o inimigo esteja "matando" o personagem de longe porque esse valor está muito grande. Você pode tentar diminuir esse valor para ver se o problema persiste.
Em relação à questão de não conseguir rotacionar o personagem, você pode estar enfrentando problemas com o código que controla a rotação. No seu código ControlaInimigo.cs, você tem um trecho que controla a rotação do inimigo em direção ao jogador:
Vector3 direcao = Jogador.transform.position - transform.position;
Quaternion novaRotacao = Quaternion.LookRotation(direcao);
GetComponent<Rigidbody>().MoveRotation(novaRotacao);
Esse trecho faz o inimigo sempre olhar para a direção do jogador. Se você está utilizando um código semelhante para controlar a rotação do jogador e não está conseguindo rotacioná-lo, pode ser que esteja faltando algum comando para permitir a rotação manual.
Sem ver o código que controla o jogador, fica um pouco difícil de te dar uma solução mais precisa. Mas, de maneira geral, para permitir que o jogador rotacione o personagem, você pode usar o método Input.GetAxis para pegar o input do mouse e usar esse input para rotacionar o personagem.
Espero ter ajudado e bons estudos!
Problema resolvido! Não sei o porque mas o problema estava relacionado com o timeScale e com o Radius dos personagens. No timeScale coloquei como timeScale = 0.5f; e resolveu o problema da rotação e do dano de longe q os inimigos causavam. Diferença é que ao dar "gameover" o game fica em câmera lenta. Creio q não seja o ideal, mas sinceramente curti bastante o efeito lento ao dar "gameover"