2015-06-14 97 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