- Home /
Question by
mscdelirium · May 27 at 01:39 PM ·
proceduralgenerationprocedural generationprocedural-generation
Spawn Floors To Fill Radius, And Remove Out Of Bounds Floors.,Spawn To Fill Radius
Hello, I am trying to make a system that spawns floor tiles (each 10x10 units) next to eachother within a certain radius, and removes the floor tiles that have their center point outside the radius. I do have functions that go about spawning floors around a center floor tile. But this will just create one circle around the center tile, instead of however many are nessecary to fill up a larger radius (currently a radius of 50 units).
Can/Should I use this approach to make it work the way I want to? If not, how else do I go about this?
private Vector2[] PlaceFloorsAround(Vector2 currentFloorXZ)
{
Vector2[] newXZs = {
new Vector2(currentFloorXZ.x + spawnOffset, currentFloorXZ.y),
new Vector2(currentFloorXZ.x - spawnOffset, currentFloorXZ.y),
new Vector2(currentFloorXZ.x, currentFloorXZ.y + spawnOffset),
new Vector2(currentFloorXZ.x, currentFloorXZ.y - spawnOffset),
new Vector2(currentFloorXZ.x -10.0f, currentFloorXZ.y - 10.0f),
new Vector2(currentFloorXZ.x + 10.0f, currentFloorXZ.y - 10.0f),
new Vector2(currentFloorXZ.x + 10.0f, currentFloorXZ.y + 10.0f),
new Vector2(currentFloorXZ.x - 10.0f, currentFloorXZ.y + 10.0f),
};
foreach (Vector2 newXZ in newXZs)
{
if (canSpawnFloor(newXZ))
{
Instantiate(floorPrefab, new Vector3(newXZ.x, floorHeight, newXZ.y), Quaternion.identity, transform);
}
}
return newXZs;
}
private bool canSpawnFloor(Vector2 newXZ)
{
LayerMask layerMask = LayerMask.NameToLayer("Floor");
Collider[] colliders = Physics.OverlapSphere(new Vector3(newXZ.x, floorHeight, newXZ.y), spawnCheckRadius, layerMask);
if (colliders.Length == 0)
{
return true;
}
return false;
}
Comment
Your answer
Follow this Question
Related Questions
Procedurally generate 3D mesh from 2D image 1 Answer
Procedural Audio in 3D 0 Answers
C# Proceducal Mesh terrain 2 Answers
Procedural generation of blocks 0 Answers