- Home /
How do I check the variable of a specific clone?
I am trying to make a game where multiple enemies come down to attack. I Instantiate them and have them randomly come down. But when I check if they are touching a bullet, only the last instantiated enemy can check it.
Here is the code I am using: (The last 2 if statements are supposed to work for all clones but only works for the last instantiated one)
public ButtonManager script;
public GameObject enemy1;
float SpawnTime1 = 0;
public float MaxTime1;
public Enemy1AI script1;
GameObject newEnemy1;
static Enemy1AI staticVar;
void Update()
{
if(script.playingGame == true)
{
SpawnTime1 += Time.deltaTime;
if (SpawnTime1 > MaxTime1)
{
newEnemy1 = Instantiate(enemy1);
newEnemy1.transform.position = new Vector2(Random.Range(-4.8f, 4.8f), 10f);
SpawnTime1 = 0;
MaxTime1 = Random.Range(4, 5);
}
Enemy1AI staticVar = newEnemy1.gameObject.GetComponent<Enemy1AI>();
if (staticVar != null)
{
if (staticVar.transform.position.y < -7)
{
Destroy(newEnemy1);
script.health -= 1;
}
if (staticVar.isTouchingBullet == true)
{
Destroy(newEnemy1);
script.sc += 100;
}
}
}
}
Answer by Caeser_21 · Feb 22 at 12:13 PM
This is happening because you are only checking the script of the last spawned enemy. To counteract this do the following...
1. Create a new tag called "Enemy1" and add it to the 'enemy1' Gameobject.
2. Then change the script to the following...
public ButtonManager script;
public GameObject enemy1;
float SpawnTime1 = 0;
public float MaxTime1;
public Enemy1AI script1;
GameObject newEnemy1;
static Enemy1AI staticVar;
private GameObject[] 1Enemies;
void Update()
{
Enemies = GameObject.FindGameObjectsWithTag("Enemy1")
if(script.playingGame == true)
{
SpawnTime1 += Time.deltaTime;
if (SpawnTime1 > MaxTime1)
{
newEnemy1 = Instantiate(enemy1);
newEnemy1.transform.position = new Vector2(Random.Range(-4.8f, 4.8f), 10f);
SpawnTime1 = 0;
MaxTime1 = Random.Range(4, 5);
}
foreach (GameObject Enemy in 1Enemies)
{
Enemy1AI staticVar = Enemy.gameObject.GetComponent<Enemy1AI>();
if (staticVar != null)
{
if (staticVar.transform.position.y < -7)
{
Destroy(Enemy);
script.health -= 1;
}
if (staticVar.isTouchingBullet == true)
{
Destroy(Enemy);
script.sc += 100;
}
}
}
}
}
NOTE : I have no clue what the 'ButtonManager' script does so I don't know whether to change it or not
Thank you so much! I was stuck on this problem for about an hour, I am very thankful of you.