- Home /
Hello I am trying to make an enemy respawn script and making my enemy respawn in different locations. My problem is that I can't figure out how to make my enemy respawn. What can I do to fix it?
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class EnemySpawing : MonoBehaviour { public int numSelectors = 10; public GameObject[] enemyArray; public GameObject enemy; public GameObject[] enemyDeadArray; public int enemyDead = 0; public float respawnTime = 2; private Vector2 screenBounds;
 void Start()
 {
     screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, Camera.main.transform.position.z));
     enemyArray = new GameObject[numSelectors];
     for (int i = 0; i < numSelectors; i++)
     {
         // When Game Starts 10 enemies spawn
         GameObject a = Instantiate(enemy) as GameObject;
         a.transform.position = new Vector2(Random.Range(-screenBounds.x, screenBounds.x), Random.Range(-screenBounds.y, screenBounds.x));
         enemyArray[i] = a;
     }
     // Called upon when an enemy dies
     if (enemyDead > 0)
     {
         StartCoroutine(EnemyRespawn());
     }
 }
 public IEnumerator EnemyRespawn()
 {
     // Respawn delay
     yield return new WaitForSeconds(respawnTime);
     enemyDeadArray = new GameObject[enemyDead];
     for (int i = 0; i < enemyDead; i++)
     {
         // Respawn Random Loactions 
         GameObject a = Instantiate(enemy) as GameObject;
         a.transform.position = new Vector2(Random.Range(-screenBounds.x, screenBounds.x), Random.Range(-screenBounds.y, screenBounds.x));
         enemyDeadArray[i] = a;
     }
 }
}
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class PlayerHitbox : MonoBehaviour { public GameObject enemy; private EnemySpawing enemySpawing; private PlayerInfo playerInfo;
 void Start()
 {
     playerInfo = this.GetComponent<PlayerInfo>();
     enemySpawing = this.GetComponent<EnemySpawing>();
 }
 private void OnTriggerEnter2D(Collider2D other)
 { 
     playerInfo.plasmaAmount += 1;
     enemySpawing.enemyDead += 1;
     other.gameObject.SetActive(false);
 }
}
Answer by Jamesco · Oct 26, 2020 at 12:20 AM
Ok I didn't read through your script but based on your question to make an enemy respawn script you can make your enemies be a prefab and call upon them in the locations that you want using instantiation (example: Instantiate (prefab, Vector3position, Querternion.identity). The location of the enemy can be called on a random using Random.Range()
Thanks a lot I just learn what a prefab is at first I thought it's just like an asset but I was wrong. This will be very useful in the future.
Your answer
 
 
             Follow this Question
Related Questions
Why does my "spawnedEnemies" variable not update when enemies are destroyed? 2 Answers
Problem with the randomly spawning enemies 0 Answers
Spawnining Characters and New Levels 0 Answers
In a closed room Instantiate game objects around the player randomly. 1 Answer
Question about Unet and spawning 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                