Unity 5中如何让行星沿着圆形或椭圆形轨道运动(轨道运动)

3

我有:

void Update () {
    transform.RotateAround(transform.parent.position, new Vector3(0, 1, 0), orbitSpeed * Time.deltaTime);
}

这使我得到一个非常基本的圆形轨道。

要获得不同的椭圆形轨道,我需要做什么(行星根据恒星随机生成,因此我还想为它们提供随机的轨道路径)?

1个回答

4

你不能使用RotateAround函数,你需要自己编写一个函数。

尝试使用以下链接中的方法:

http://answers.unity3d.com/questions/133373/moving-object-in-a-ellipse-motion.html

x, y: center of the ellipse
a, b: semimajor and semiminor axes

代码:

 var a : int;
 var b : int;
 var x: int;

 var y : int;
 var alpha : int;
 var X : int;
 var Y : int;

 function Update () {
     alpha += 10;
     X = x + (a * Mathf.Cos(alpha*.005));
     Y= y + (b * Mathf.Sin(alpha*.005));
     this.gameObject.transform.position = Vector3(X,0,Y);
 }

编辑:

如果您想让它绕另一个物体运行,请使用以下代码:

     this.gameObject.transform.position = anotherObject.transform.position + Vector3(X,0,Y);

1
@MickyDuncan 我看到,JinJi提供了一个可定制的组件,可以通过椭圆路径移动其游戏对象。他们还应该添加什么? - Nick Volynkin
我尝试了http://answers.unity3d.com/questions/133373/moving-object-in-a-ellipse-motion.html上的解决方案,但它只改变了轨道的倾斜度,而改变x和y则改变了旋转中心。这可能与我希望其绕其父对象轨道运转有关吗?如果是这样,那么该如何使其正常工作? - imperium2335
@imperium2335,我已经编辑了你新问题的答案。 - Jinjinov
@JinJi 谢谢,我一回家就会尝试并相应地接受你的答案。 - imperium2335

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接