Für ein kleines Projekt brauchte ich das Modell von unserem Sonnensystem.
Als Besonderheit hier, alle Planeten befinden sich auf gleicher y Koordinate, also auf gleicher Höhe. Das kann man mit ein paar kleinen Änderungen aber schnell anpassen. Ausserdem rotieren die Planeten nicht elipsisch sonder rund um die Sonne. Das wäre eine etwas größere Änderung.
Die weiteren Daten zu den einzelnen Planeten, wie Größe, Geschwindigkeit, Rotation, durchschn. Abstand zur Sonne etc. habe ich mir dann von Wikipedia gezogen.
Für die Monde kann man das ganze im kleinen so auf die Planeten runterbrechen.
Zuerst einmal das Script für die Rotation:
using UnityEngine;
using System.Collections;
public class PlanetRotation : MonoBehaviour {
public float AnzTageUmdrehung;
public bool Linksdrehend = false;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (!Linksdrehend) {
transform.Rotate (Vector3.down * Time.deltaTime * (182.5F / AnzTageUmdrehung));
} else {
transform.Rotate (Vector3.up * Time.deltaTime * (182.5F / AnzTageUmdrehung));
}
}
}
AnzTageUmdrehung sagt hier wie lange ein Planet, gemessen in Erdzeit, braucht, um einmal um sich selbst zu rotieren.
Linksdrehend sagt, ob sich der Planet links oder rechts herum dreht.
(1 Tag für den Mars ist hier natürlich nicht der korrekte Wert. Richtig wäre 24 h 37 min 22 s - aber da war mir das ausrechnen der Dezimalzahl zu lästig XD )
Nun das Script für den Umlauf um die Sonne:
using UnityEngine;
using System.Collections;
public class UmlaufSonne : MonoBehaviour {
public float AnzTageUmdrehungSonne;
public float FaktorVerschiebung;
private Vector3 pos;
public GameObject Planet;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
pos = Planet.transform.position;
if (transform.rotation.y >= 180) {
pos.z -= FaktorVerschiebung;
} else {
pos.z += FaktorVerschiebung;
}
Planet.transform.position = pos;
transform.Rotate(Vector3.down * Time.deltaTime * (182.5F / AnzTageUmdrehungSonne));
}
}
AnzTageUmdrehungSonne zeigt an, gemessen in Erdzeit, wie lange ein Planet braucht, um einmal um die Sonne zu kreisen.
pos ist die Position des Planeten im Koordinatensystem
FaktorVerschiebung ist ein Korrekturwert
(Mars)
(Merkur vor der Sonne)
Ihr dürft das ganze natürlich frei nutzen, ändern und verwenden.
Wer Änderungen und/oder Verbesserungen zu o.g. Script hat, darf mir die natürlich gerne mitteilen.
Wer das Script nutzt darf mich gerne in seinen Credits als BroPowerGames aufführen. XD