Exemplo n.º 1
0
    [SerializeField] AudioClip tocat, enfonsat; // Inicialitzem en cada prefab

    private void OnTriggerEnter2D(Collider2D otro)
    {
        bool impacte = false;

        // print(transform.name + " vs " + otro.name); // per testejar col·lisions detectades
        ScrDamage scrD = otro.GetComponent <ScrDamage>(); // intentem llegir script ScrDamage

        if (scrD)                                         // si en té, és un objecte que treu vida. Calculem
        {
            if (tag == "Player" && scrD.damagePlayer > 0) // soc el player i l'objecte em treu vida
            {
                vitality -= scrD.damagePlayer;
                impacte   = true;
            }
            else if (tag != "Player" && scrD.damageNPC > 0) // soc un NPC i l'objecte em treu vida
            {
                vitality -= scrD.damageNPC;
                impacte   = true;
            }

            // si la col·lisió és amb una projectil, el destruim (busca funció Destruccio en els script associats)
            if (otro.tag == "shot")
            {
                if (tag == "Player" && scrD.damagePlayer > 0 || tag != "Player" && scrD.damageNPC > 0)
                {
                    otro.SendMessage("Destruccio", SendMessageOptions.DontRequireReceiver);
                }
            }

            // si no em queda vida, m'autodestrueixo
            if (impacte)
            {
                if (vitality <= 0)
                {
                    SendMessage("Destruccio", SendMessageOptions.DontRequireReceiver);
                    if (enfonsat)
                    {
                        AudioSource.PlayClipAtPoint(enfonsat, Camera.main.transform.position);
                    }
                }
                else
                if (tocat)
                {
                    AudioSource.PlayClipAtPoint(tocat, Camera.main.transform.position);
                }
            }
        }
    }
Exemplo n.º 2
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        bool impacte = false;

        ScrDamage Damage = collision.GetComponent <ScrDamage>(); //intentem llegir el scrDamage per comprovar si collisiona amb algo que treu vida i no un pickup, per exemple.

        if (Damage)                                              // si l'objecte tenia l'script scrDamage associat:
        {
            if (tag == "Player" && Damage.damagePlayer > 0)
            {
                vida   -= Damage.damagePlayer;
                impacte = true;
            }

            else if (tag != "Player" && Damage.damageNPC > 0)
            {
                vida   -= Damage.damageNPC;
                impacte = true;
            }
        }

        if (impacte)
        {
            if (vida <= 0 && enfonsat)
            {
                AudioSource.PlayClipAtPoint(enfonsat, Camera.main.transform.position);
            }
            if (vida <= 0 && tocat)
            {
                AudioSource.PlayClipAtPoint(tocat, Camera.main.transform.position);
            }
        }

        if (collision.tag == "shot" && impacte)
        {
            collision.SendMessage("Destruccio", SendMessageOptions.DontRequireReceiver);
        }

        if (vida <= 0)
        {
            SendMessage("Destruccio", SendMessageOptions.DontRequireReceiver);
        }
    }