- Home /
Question by
ammarABC · Dec 24, 2016 at 06:29 AM ·
spawning problems
im having problems spawning these prefabs in a grid next to each other with some spacing thanks in advance
using UnityEngine; using System.Collections;
public class ArraysScript : MonoBehaviour {
int[] arrayOfNums = new int[36];
GameObject[] arrayOfSprites;
bool exists = false;
int count = 0;
float x;
float y;
public float spacing = 2f;
void SpawnRandomSprite()
{
//random location
int location = Random.Range(0, arrayOfSprites.Length);
Debug.Log(location);
exists = false;
for (int i = 0; i < arrayOfNums.Length; i++)
{
//if position is empty
if (arrayOfNums[i] == -1)
{
//if the number does not exist in arrayOfNums
if (exists == false)
{
arrayOfNums[i] = location;
exists = false;
break;
}
}
else if (arrayOfNums[i] == location)
{
exists = true;
}
}
//if object does not exist in array
if (exists == false)
{
Vector3 pos = new Vector3(x, 0, y) * spacing;
//spawns a random object from the array in the random position randomXY
GameObject spawn = Instantiate(arrayOfSprites[location], pos, transform.rotation) as GameObject;
count++;
}
}
// Use this for initialization
void Start()
{
x = transform.position.x;
y = transform.position.y;
//loads all GameObjects found in Assets/Resources/prefabs
arrayOfSprites = Resources.LoadAll<GameObject>("prefabs");
//show all objects in console
foreach (GameObject temp in arrayOfSprites)
{
Debug.Log(temp.name);
}
//fill arrayOfNums with -1
for (int a = 0; a < arrayOfNums.Length; a++)
{
arrayOfNums[a] = -1;
}
}
// Update is called once per frame
void Update()
{
if (count < 36)
{
SpawnRandomSprite();
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Objects spawning in each other 1 Answer
Why are objects only spawning on host but not on remote clients? 3 Answers
Multiple spawn location with random game object in random time spawn c# 1 Answer
Scripts are being disabled during game play 0 Answers
Spawning a set amount of game objects that replaces the objects as they're destroyed 1 Answer