Make a collision check when spawning with Instantiate
Hi! I'm new to Unity and I'm trying to generate a simple jungle from selected variables. I have write this code:
public GameObject[] prefabsToSpawn;
public float xmin, xmax, ymin, ymax, zmin, zmax, numberOfSpawns;
void Start()
{
for (int i = 0; i < numberOfSpawns; i++)
{
Instantiate(prefabsToSpawn[Random.Range(0, prefabsToSpawn.Length)], GeneratedPosition(), Quaternion.identity);
}
}
Vector3 GeneratedPosition()
{
float x, y, z;
x = Random.Range(xmin, xmax);
y = Random.Range(ymin, ymax);
z = Random.Range(zmin, zmax);
return new Vector3(x, y, z);
}
It actually works good. But the problem is sometimes objects spawn inside each other. Example:
Is it possible to make a collision check before spawning an prefab?
Answer by hexagonius · Jan 03, 2016 at 10:37 PM
There's several versions of Physics.Overlap... calls which you can perform with the size of your prefabs prior to instantiation to see if they would fit.
If you want to check for mesh collision, how would you set it up?
You have to work around it since there's no mesh cast. Either by approximating the shape and choosing an available primitive (calculating center and largest distance of all the vertices in the mesh for a sphere for example), or just spawn it in place and listen to collision or trigger events, then removing it again... There's no perfect solution to this, just choose the best approximation for your case.
Your answer
Follow this Question
Related Questions
Third person controller moving backwards when shooting 0 Answers
Spawn system that doesn't instantiated enemies on top of player or each other (C#) 2 Answers
How can I make an object clone in the time that I indicate it to appear? 0 Answers
Spawn Prefab based on int value 1 Answer
Problem with instantiated prefabs. Object stays dark 1 Answer