I’m working on a 3D game, and an issue I’ve been having is that enemies are spawning too quickly despite a variable that I thought would act as a limit (enemiesToSpawn). Does anyone know why this is happening and how I can fix it? Any help would be appreciated!
Here is my script for the enemy:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class Enemy : MonoBehaviour
{
public GameObject laser;
public GameObject enemy;
float RandomXValue;
public int enemiesKilled = 0;
Rigidbody enemyRigid;
int enemiesToSpawn = 5;
int wave = 1;
void Start()
{
enemyRigid = enemy.GetComponent<Rigidbody>();
enemyRigid.AddForce(0, 0, -6, ForceMode.VelocityChange);
RandomXValue = Random.Range(-100.0f, 100.0f);
enemy.transform.position = new Vector3(RandomXValue, enemy.transform.position.y, enemy.transform.position.z);
}
void Update()
{
if(enemiesToSpawn == 0 && enemiesKilled == (wave * 3) - wave)
{
wave++;
enemiesToSpawn = (wave * 3) - wave;
}
if(enemiesToSpawn!=0)
{
float randomEnemyTimer = Random.Range(2.0f, 5.0f);
Invoke("SpawnEnemy", randomEnemyTimer);
enemiesToSpawn--;
}
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Laser")
{
enemiesKilled++;
ResetEnemy();
laser.gameObject.GetComponent<Shoot1>().ResetLaser();
}
}
public void ResetEnemy()
{
RandomXValue = Random.Range(-100.0f, 100.0f);
Instantiate(enemy, new Vector3(RandomXValue, enemy.transform.position.y, 90), Quaternion.identity);
enemy.gameObject.SetActive(false);
enemyRigid.AddForce(0, 0, -2, ForceMode.VelocityChange);
}
public void SpawnEnemy()
{
RandomXValue = Random.Range(-100.0f, 100.0f);
Instantiate(enemy, new Vector3(RandomXValue, enemy.transform.position.y, 90), Quaternion.identity);
}
}