1
resposta

Chefe não leva dano

Boa tarde, assim como outro colega, o chefe no meu jogo não leva dano, como eu posso resolver isso?

Bala

       void OnTriggerEnter(Collider objetoDeColisao)
         {
    switch(objetoDeColisao.tag)
    {
        case "Inimigo":
        objetoDeColisao.GetComponent<ControlaZumbi>().TomarDano(1);
        break;
        case "ChefeDeFase":
        objetoDeColisao.GetComponent<ControlaChefe>().TomarDano(1);
        break;
    }
    

ControlaChefe

 public void TomarDano(int dano)
{
    statusChefe.Vida -= dano;
    if(statusChefe.Vida <= 0)
    {
        Morrer();
    }

}

public void Morrer()
{
    animacaoChefe.Morrer();
    movimentoChefe.Morrer();
    this.enabled = false;
    agente.enabled = false;
    Destroy(gameObject, 2);

}

 }
1 resposta

Olá, Vitor.

Tudo bem?

Pelo que você descreveu, parece que o seu código está correto. Entretanto, existem algumas possibilidades que podem estar causando o problema de o chefe não receber dano.

  1. Verifique se o objeto do chefe está com a tag "ChefeDeFase" corretamente. O código que você compartilhou indica que a bala só irá causar dano se o objeto de colisão tiver essa tag.

  2. Certifique-se de que o componente "ControlaChefe" está anexado ao objeto do chefe e que o script está funcionando corretamente.

  3. Confira se a variável "statusChefe.Vida" está sendo inicializada corretamente. Se ela começar com um valor de 0 ou menor, o chefe morrerá imediatamente ao receber dano, o que pode dar a impressão de que ele não está recebendo dano.

  4. Verifique se o método "OnTriggerEnter" está sendo chamado corretamente. Você pode fazer isso adicionando um comando de log no início do método, como por exemplo: Debug.Log("OnTriggerEnter foi chamado");. Se este log não aparecer no console quando a bala atinge o chefe, então o problema pode estar na detecção de colisão.

Espero ter ajudado e bons estudos!