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

[Dúvida] Ao reiniciar o jogo, o inimigo me "mata" mesmo de longe

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

2 respostas
solução!

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"

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