What would be a good way to create a random assortment of asteroids in a given bounding area, with no overlaps being allowed? I can’t think of any way besides brute force while loops.
You can use a for loop and the Instantaniate command to create an asteroid field. ive thought of this idea too XD
In our game I recently did this to spawn debris. It shows the bounding box in the editor and is ready to take different types of meshes with a random rotation. Adding different sizes would just be another variable to throw in if you want that.
var junkObjects : GameObject[]; //The different types of objects to spawn
var totalObjects : int = 100; //The amount of objects to spawn
var size = Vector3(10,10,10); //The initial size of the spawn area
var useRandomRotation : boolean = true; //Random rotation at spawn
private var pos;
function Start () {
for(i=0; i<totalObjects; i++) {
var randomX : int = Random.Range(-size.x/2, size.x/2);
var randomY : int = Random.Range(-size.y/2, size.y/2);
var randomZ : int = Random.Range(-size.z/2, size.z/2);
pos = transform.position+Vector3(randomX, randomY, randomZ);
var junkObject = Random.Range(0,junkObjects.length);
if(useRandomRotation==true){
Instantiate(junkObjects[junkObject], pos, Random.rotation);
} else {
Instantiate(junkObjects[junkObject], pos, Quaternion.identity);
}
}
}
function OnDrawGizmosSelected () {
Gizmos.color = Color (1,0,0,.5);
Gizmos.DrawCube (transform.position, Vector3 (size.x,size.y,size.z));
}