using UnityEngine; // Este script va sobre el prefab del meteorito. // A diferencia de la nave y la bala, el meteorito NO se mueve por código: // se mueve solo porque tiene un Rigidbody2D con gravedad, y Unity lo hace caer. public class Meteor : MonoBehaviour { void Start() { // Le damos una rotación inicial al azar (grados por segundo). // Como es un Rigidbody2D, con solo fijar este valor una vez acá, Unity se encarga // de ir rotando el objeto solo en cada frame, sin que nosotros escribamos más código. Rigidbody2D rb = GetComponent(); rb.angularVelocity = Random.Range(-90f, 90f); } // OnBecameInvisible() se llama automáticamente cuando el Sprite Renderer de este objeto // deja de estar dentro de la vista de cualquier cámara. Es otra forma de "limpiar" // objetos que ya no se necesitan, distinta a las que usamos en la nave y en la bala. void OnBecameInvisible() { Destroy(gameObject); } // El Collider2D del meteorito NO es un trigger (así los meteoritos chocan físicamente // entre ellos). Pero el Collider2D de la nave sí es un trigger (Módulo 3.3) — y como // con que UNO de los dos sea trigger alcanza, este choque en particular se avisa acá, // con OnTriggerEnter2D, en vez de con OnCollisionEnter2D. void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Player")) { // Un meteorito mata de un solo golpe, sin importar cuánta vida quede. // Quien decide qué pasa con la nave es PlayerController, no nosotros: // nosotros solo avisamos el golpe. PlayerController jugador = other.GetComponent(); if (jugador != null) { jugador.MorirInstantaneamente(); } Destroy(gameObject); } } }