Je recommande d'utiliser transform.RotateAround() dans la fonction de mise à jour de la lune.
using UnityEngine;
public class Orbit : MonoBehaviour
{
/* the object to orbit */
public Transform target;
/* speed of orbit (in degrees/second) */
public float speed;
public Update()
{
if (target != null) {
transform.RotateAround(target.position, Vector3.up, speed * Time.deltaTime);
}
}
}
MISE À JOUR:
Pour une lune tourner autour de la Terre, et la Terre tournent autour du soleil, vous devriez faire la lune un enfant de la Terre. Ajoutez le script ci-dessus. Ensuite, il sera dans l'espace de coordonnées de la Terre, ce qui signifie qu'il restera dans la même position relative. Vous pouvez ensuite attacher le script à la Terre et l'enfant de la Terre au soleil.
Si vous choisissez de prendre cette approche, je vous recommande de changer le script comme ceci:
using UnityEngine;
public class Orbit : MonoBehaviour
{
/* speed of orbit (in degrees/second) */
public float speed;
public Update()
{
Transform target = transform.parent;
if (target != null) {
transform.RotateAround(target.position, Vector3.up, speed * Time.deltaTime);
}
}
}
merci Fécal. et si je veux ajouter une autre animation qui sera comme ceci: la terre tourne autour d'elle-même et dans le même temps elle tourne autour du soleil. Je ne peux pas faire plus d'une animation pour un objet dans Unity3D? !! – Abdulkareem
Désolé, je n'ai pas vu cette question jusqu'à maintenant. J'ai changé la réponse en conséquence, mais j'imagine que vous avez probablement déjà compris cela. Veuillez cocher ma réponse si c'était correct. –