2011-07-19 30 views

回答

0
  1. 假设模型地球已经为中心的局部坐标系,可以修改myEarth.Transform.localRotation随着时间的推移,以动画的旋转。

  2. 为了让月球绕着地球旋转,你首先要将月球嵌套为地球的小孩;这样,当地球移动时,月球仍然会相对于地球正确定位。随着月球成为地球的一个孩子,那么你必须在地球坐标系中围绕原点(< 0,0,0>)的椭圆(或圆形大约)路径上对月球进行动画处理。

1

我推荐在月球的更新功能中使用transform.RotateAround()

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

UPDATE:

为了使月球绕地球,与地球绕太阳旋转,你应该让月亮对地球的孩子。将上面的脚本添加到它。那么它将在地球的坐标空间内,这意味着它将保持在相同的相对位置。 然后,您可以将脚本附加到地球上,让地球对着太阳。

如果选择采取这种方法,我建议改变这样的脚本:

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

谢谢粪便。 如果我想添加另一个动画,如下所示: 地球围绕自身旋转,同时围绕太阳旋转。 我不能在Unity3D中为一个对象做多个动画?!! – Abdulkareem

+0

对不起,我直到现在才看到这个问题。我相应地改变了答案,但我想你可能已经解决了这个问题。如果它是正确的,请打勾我的答案。 –

0

什么可以帮助您的情况来处理Unity3D多个动画,是考虑让您用起来更加容易通过概览您的动画路径。为了缩小思考和实际做动画工作之间的边界,我使用iTween插件来对动画对象的这些路径进行可视化并应用一些更复杂的逻辑。为了您的情况,可以在对象上添加旋转并为其后续的路径添加动画。使用iTween有相当多的文档记录,并且可以很容易地完成这样的动画。

相关问题