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
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"