我有:
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);