Problems with instantiated objects in a circle formation
Hello world,
I'm having an issue that I can't quite solve. I have a working script that instantiates objects around another object in a circular formation.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoonSpawner : MonoBehaviour
{
public GameObject moonPrefab;
public float orbitRadius;
public int currentMoonNumber;
private Vector3 center;
private float rotationSpeed = 50;
void Start()
{
center = this.transform.position;
{
SpawnMoons();
}
}
public void Update()
{
transform.Rotate(new Vector3(0f, 0f, rotationSpeed) * Time.deltaTime);
}
public void SpawnMoons()
{
for (int i = 0; i < currentMoonNumber; i++)
{
GameObject moon= Instantiate(moonPrefab, center, Quaternion.identity) as GameObject;
moon.transform.SetParent(this.transform, false);
float angle = i * Mathf.PI * orbitRadius / currentMoonNumber;
Vector3 NewPosition = new Vector3(Mathf.Sin(angle) * orbitRadius, Mathf.Cos(angle) * orbitRadius, 0);
moon.transform.localPosition = NewPosition;
}
}
}
Now, this script works fine with certain numbers and doesn't with others. The rotation in void update is a little wierd, with the moons wobbling a little bit (that needs to be fixed somehow) but my main problem is the following: certain moon numbers don't work.
When the currentMoonNumber is 1, 2, 4, 7 the script works, with every moon neatly in its place. When the currentMoonNumber is 3, 5, 6 the script spawns the moons but they're spawned overlapping each other so they look like 1 moon. (i checked and saw that the moons were instantiated, but overlapping in the same position.
i have no idea why this happens. I think it has to do with the math used to calculate the distance among the moons.
can anyone give me a hand with this?
thanks in advance!
Lajos