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