/// <summary> /// Returns a random world point inside the given BoxCollider /// </summary> public static Vector3 GetPointInCollider(this BoxCollider area) { var bounds = area.bounds; var center = bounds.center; var x = UnityEngine.Random.Range(center.x - bounds.extents.x, center.x + bounds.extents.x); var z = UnityEngine.Random.Range(center.z - bounds.extents.z, center.z + bounds.extents.z); return new Vector3(x, 0, z); }
I normally use this method to get a random spawnpoint within my spawn area represented with a BoxCollider (set to a trigger of course).
Notice how I hardcode Y to 0 because the Y position is irrelevant to me since that is set by code outside of this method.
public BoxCollider spawnArea; void SpawnWhatever() { Vector3 spawnPoint = spawnArea.GetPointInCollider(); // Spawn something at the random spawnpoint we got // ... }