- 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