예제 #1
0
    void AplicarDano(GameObject objetoColidido)
    {
        if (objetoColidido.tag == tagDeObjetosColidiveis)
        {
            vidaDeObjetoColidido    = objetoColidido.GetComponent <Vida>();
            rbDeObjetoColidido      = objetoColidido.GetComponent <Rigidbody>();
            navMeshDeObjetoColidido = objetoColidido.GetComponent <NavMeshAgent>();

            if (vidaDeObjetoColidido != null)
            {
                vidaDeObjetoColidido.MudarVida(-dano);
            }

            if (navMeshDeObjetoColidido != null && navMeshDeObjetoColidido.enabled)
            {
                navMeshDeObjetoColidido.enabled = false;
                rbDeObjetoColidido.isKinematic  = false;
                Invoke("ReativarNavMeshDeObjetoColidido", 0.25f);
            }

            if (rbDeObjetoColidido != null)
            {
                var direcaoParaAfastar = objetoColidido.transform.position - transform.position;
                rbDeObjetoColidido.AddForce(direcaoParaAfastar * afastar, ForceMode.Impulse);
            }
        }

        if (autoDestruirEmColisao)
        {
            Destroy(gameObject);
        }
    }