我正试图在Unity中围绕地球旋转月球。
我的问题是:
答案 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);
}
}
}
<强>更新强>
要使月球围绕地球旋转,地球围绕太阳旋转,你应该让月球成为地球的孩子。将上面的脚本添加到它。然后它将在地球的坐标空间内,这意味着它将保持在相同的相对位置。 然后,您可以将脚本附加到地球,将地球附加到太阳。
如果您选择采用这种方法,我建议您更改脚本:
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);
}
}
}
答案 1 :(得分:0)
假设您的模型地球已经以其局部坐标系为中心,您可以随着时间的推移修改myEarth.Transform.localRotation
以设置其旋转的动画。
为了让月球围绕地球旋转,你首先要把月亮作为地球的孩子筑巢;这样,当地球移动时,月球仍将相对于地球正确定位。随着月球成为地球的孩子,你必须在地球本地坐标的原点(&lt; 0,0,0&gt;)周围的椭圆形(或近似圆形)路径上为月亮设置动画。
答案 2 :(得分:0)
在Unity3D中处理多个动画有助于您的情况,通过概述动画的路径,可以考虑让您更轻松。为了缩小思考和实际进行动画工作之间的界限,我使用iTween插件来观察动画对象的那些路径并应用一些更复杂的逻辑。对于您的情况,空间上是向对象添加旋转并为其遵循的路径设置动画。有很多文档证明使用iTween并且可以使用它轻松完成这样的动画。