Spawn Objects on Grid - how to define size?
Hey! I want to span some cubes on a Grid. for this iam using this script:
using UnityEngine;
using System.Collections;
public class WorldSpawn : MonoBehaviour {
public GameObject block1;
public int worldSize = 10;
public int worldWidth = 10;
public int worldHeight = 10;
public float spawnSpeed = 0;
void Start () {
StartCoroutine(CreateWorld());
}
IEnumerator CreateWorld () {
for(int x = 0; x < worldWidth; x++) {
yield return new WaitForSeconds(spawnSpeed);
for(int z = 0; z < worldHeight; z++) {
yield return new WaitForSeconds(spawnSpeed);
GameObject block = Instantiate(block1, Vector3.zero, block1.transform.rotation) as GameObject;
block.transform.parent = transform;
block.transform.localPosition = new Vector3(x, 0, z);
}
}
}
}
what i want to do now is, only have to define the "worldSize" int and the worldWidth and worldHeight gets calculated automatically based on this value. so for example if i say worldSize= 25 the worldHeight&worldWidth should be 5x5. how can i do this?
another question would be how can i do a non-square? so - same example: if i say worldSize= 25 the worldHeight&worldWidth should be 3x8.333 (so in the last row is only one square). how can i do this?
Answer by Naphier · May 13, 2016 at 06:00 PM
You'll need to define how worldSize is converted to worldWidth and worldHeight. I wouldn't suggest this. I would suggest not using worldSize at all and just using width and height. If you do want to use worldSize then you're really only going to be able to do something like worldSize = 100, worldHeight = Mathf.sqrt(worldSize). So you'd be stuck with equal width and height always.
Your answer
Follow this Question
Related Questions
Spawning limited GameObjects at a specific position not working 1 Answer
spawn object every 10 score points 1 Answer
Instantiate a prefab at three specific x positions 0 Answers
Hexagonal geodesic map 0 Answers
Instantiate works only in Editor 0 Answers