Hey Unitarians!
What I’m trying to do is on every frame, make an array of all the visible enemies in the scene. The way I’m trying to do this is by this code:
// Use this for initialization
void Start () {
Enemies = GameObject.FindGameObjectsWithTag("Enemy");
}
// Update is called once per frame
void Update () {
if(!player) { //There isn't a player to check distance with, so don't worry about it
player = GameObject.FindWithTag("Player");
} else {
//There is a player - continue
for(int i = 0 ; i < Enemies.Length ; i++) //See what enemies are visible
{
if(Enemies*.GetComponent<MeshRenderer>().renderer.isVisible == true) {*
VisibleEnemies = Enemies*;*
* }*
* }*
* if(VisibleEnemies.Length == 0) { //If there are no visible enemies*
* this.transform.position = new Vector3(0.5f, 0.5f, 0.0f);*
* } else { //There are visible enemy(s)*
* }*
* }*
* }*
And what it should do is this:
- In the start method, find all the enemies in the screen and store in an array
- On every update, it should go through every enemy in the Enemies array and check to see if they are visible from the camera’s perspective
- If they are, they are added to another array called VisibleEnemies
- Then the code checks to see if there are any enemies in the VisibleEnemies array. If there aren’t any, then the script holder gameobject reverts to a default state.
There are no errors int he code but when I run it I get this cryptic error:
> IndexOutOfRangeException: Array index is out of range.
(wrapper stelemref) object:stelemref (object,intptr,object)
Crosshair.Update () (at Assets/My Thingies/Scripts/Miscellaneous/Crosshair.cs:27)
For reference, line 27 says:
VisibleEnemies = Enemies*;*
I have no idea how to procede so any help would be greatly appreciated!