Bueno, este es mi guión enemigo:
public class Enemy : MonoBehaviour { public GameObject explosion; public float speed; public float shotDelay; public GameObject enemyBomb; public bool canShot; public int pointValue = 30; IEnumerator Start() { GetComponent<Rigidbody2D>().velocity = Vector2.right * speed; if (canShot == false) yield break; while (true) { for (int i = 0; i < transform.childCount; i++) { Instantiate(enemyBomb, transform.position, transform.rotation); } yield return new WaitForSeconds(shotDelay); } } private void OnTriggerEnter2D(Collider2D collision) { FindObjectOfType<Score>().AddPoint(pointValue); Instantiate(explosion, transform.position, transform.rotation); Destroy(gameObject); } private void OnBecameInvisible() { Destroy(gameObject); } }El problema es que el enemigo dispara antes de que sea visible, por lo que no hay posibilidad de luchar contra él. ¿Hay alguna forma de comprobar si el Enemigo está visible o no?
tal vez deberías intentar agregar un gatillo, de modo que cuando el enemigo toque el gatillo que está configurado alrededor de la visión del jugador, algo (digamos isvisible = true ) debe establecerse en verdadero y cada vez que el enemigo quiera disparar, verifica if (isvisible == true){//shoot} . Y cuando el enemigo sale del gatillo OnTriggerExit2D(Collider2D collision) establece isvisible = false
Espero que funcione para ti.