[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); } } } }
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); } }