2015-06-14 58 views
1

我有:统一5移动行星圆形或椭圆形的路径(轨道)

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

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

我需要做些什么来获得不同的椭圆轨道(行星是随机产生的每颗恒星,所以我也想给他们随机的轨道路径)?

回答

3

你不能使用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提供了一个可定制的组件,通过椭圆路径移动它的GameObject。他们还应该添加什么? –

+0

我已经尝试了http://answers.unity3d.com/questions/133373/moving-object-in-a-ellipse-motion.html上的解决方案,但它只改变轨道倾斜度,改变x和y改变中心回转。难道这是为了处理我想让它绕着它的父对象运行的事实吗?如果是这样,我该如何让它正常工作? – imperium2335

+0

@ imperium2335我编辑了你的新问题的答案 – JinJi