1
void Update() {
transform.RotateAround(transform.parent.position, new Vector3(0, 1, 0), orbitSpeed * Time.deltaTime);
}
這使我一個非常基本的圓形軌道。
我需要做些什麼來獲得不同的橢圓軌道(行星是隨機產生的每顆恆星,所以我也想給他們隨機的軌道路徑)?
void Update() {
transform.RotateAround(transform.parent.position, new Vector3(0, 1, 0), orbitSpeed * Time.deltaTime);
}
這使我一個非常基本的圓形軌道。
我需要做些什麼來獲得不同的橢圓軌道(行星是隨機產生的每顆恆星,所以我也想給他們隨機的軌道路徑)?
你不能使用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);
@MickyDuncan就像我看到的,JinJi提供了一個可定製的組件,通過橢圓路徑移動它的GameObject。他們還應該添加什麼? –
我已經嘗試了http://answers.unity3d.com/questions/133373/moving-object-in-a-ellipse-motion.html上的解決方案,但它只改變軌道傾斜度,改變x和y改變中心迴轉。難道這是爲了處理我想讓它繞着它的父對象運行的事實嗎?如果是這樣,我該如何讓它正常工作? – imperium2335
@ imperium2335我編輯了你的新問題的答案 – JinJi