- Home /
Instantiate gameobjects in a segment of a circle if you have radius of the cricle
I want to instantiate gameobjects in a segment of a circle e.g in between 10 degrees and 100 degrees from a known vector3 position. (Imagine a shape of pizza). I found following code that helps me instantiate objects between 0 and 180 degrees. Can someone help me instantiate gameobjects between 10 and 100 degrees as an example.
Vector3 randomCircle ( Vector3 center , float radius )
{
float ang = Random.value * 180;
Vector3 pos;
pos.x = center.x + radius * Mathf.Sin(ang * Mathf.Deg2Rad);
pos.y = center.y + radius * Mathf.Cos(ang * Mathf.Deg2Rad);
pos.z = center.z;
return pos;
}
Answer by leech54 · May 10, 2017 at 07:16 PM
float ang = Random.Range(10.0f, 100.0f) ; should do the trick
Answer by Shrikky23 · May 10, 2017 at 06:12 PM
Vector3 randomCircle ( Vector3 center , float radius )
{
Vector3 pos;
pos.x = center.x + radius * Mathf.Sin(Mathf.Random(10,100) * Mathf.Deg2Rad);
pos.y = center.y + radius * Mathf.Cos(Mathf.Random(10,100) *Mathf.Deg2Rad);
pos.z = center.z;
return pos;
}
Note: Mathf.Random includes both 10 and 100, (min and max range)
If you do it this way the x and y values will be cauculated off 2 random angles. You need the same value for the Sperical 2 cartisian calculation.
Your answer
Follow this Question
Related Questions
Spawn prefabs in a circle? 3 Answers
Max Spawning Obejcts 0 Answers
[UNET] Dynamically position NetworkStartPosition Gameobjects 2 Answers
Game objects are getting instantiated at the same position. 1 Answer
Question about Unet and spawning 0 Answers