- Home /
How to change the rotation of the circle spawn?
there is a cube and beside it to spawn things in the zone of a circle with a hole, but you need to change the rotation of this circle
public class SpawnOre : MonoBehaviour {
public GameObject prefabs;
public float holeRadius = 1.0f;
public float diskRadius = 2.5f;
public Vector3 holeLocalPos = Vector3.zero;
// Use this for initialization
void Start () {
InvokeRepeating("Spawner", 0.01f, 0.01f);
}
// Update is called once per frame
void Update () {
}
void Spawner() {
Vector3 pos = FindPos();
pos += transform.position;
Instantiate(prefabs, pos, transform.rotation);
}
Vector3 FindPos() {
Vector3 pos = Vector3.zero;
for (var i = 0; i < 1000; i++) {
pos = Random.insideUnitCircle * diskRadius;
if (Vector3.Distance(pos, holeLocalPos) > holeRadius) {
return pos;
}
}
return pos;
}
}
here is the result:
the circle should be like on the ground and not relative to the cube
Answer by Ady_M · Jan 07, 2019 at 10:53 PM
You mean like this?:
pos = Random.insideUnitCircle * diskRadius;
pos = new Vector3 (pos.x, 0, pos.y); // Lay the circle down flat on the ground
Also, if you're interested in optimizing your code, you can do the following then you won't need the loop:
public Vector3 FindPos ()
{
Vector3 pos = Random.insideUnitCircle;
pos = new Vector3 (pos.x, 0, pos.y); // Lay the circle down flat on the ground
pos = pos.normalized * (holeRadius + pos.magnitude * (diskRadius - holeRadius));
return pos;
}
Hmm... I just realized something. $$anonymous$$y optimization suggestion assumes the hole is always in the middle of the spawner. Are you going to move the hole around? In that case, ignore my optimization code :)
Your answer
Follow this Question
Related Questions
Flip over an object (smooth transition) 3 Answers
Rotation circle to stop at a certain angle 1 Answer
Random.rotationUniform clarification 4 Answers
Gaussian Distribution in circle on x and y axis 1 Answer
Determine Rotation Between Two Points 2 Answers