2011-07-19 3 views

Répondre

0
  1. En supposant que votre terre modèle est déjà centrée autour de son système de coordonnées local, vous pouvez modifier myEarth.Transform.localRotation au fil du temps pour animer son spin. Pour faire tourner la lune autour de la terre, vous voudrez d'abord imbriquer la lune comme un enfant de la terre; De cette façon, quand la terre bouge, la lune sera toujours positionnée correctement par rapport à la terre. Avec la lune un enfant de la terre, vous devez alors animer la lune sur un chemin elliptique (ou circulaire comme un approx.) Autour de l'origine (< 0,0,0>) en coordonnées locales de la terre.

1

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); 
     } 
    } 
} 
+0

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

+0

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. –

0

Ce qui pourrait aider votre cas à gérer plusieurs animations en Unity3D, est d'envisager le rendre plus facile pour vous en ayant une vue d'ensemble sur le chemin de vos animations. Pour rétrécir la frontière entre penser et faire le travail d'animation, j'utilise le plugin iTween pour visualiser ces chemins de l'objet animé et appliquer des logiques plus complexes. Pour votre cas, c'est d'ajouter de la rotation à l'objet et d'animer un chemin qu'il suit. Il y a beaucoup de documentation pour utiliser iTween et faire une telle animation pourrait être facilement fait avec.

Questions connexes