如何改善火箭的轨迹(Unity 3d)

时间:2016-02-10 14:50:09

标签: unity3d simulation physics game-physics

我有一个附有空物体的球体,物体位于行星表面,火箭从这个空物体发射。球体在旋转。 我的火箭可以从它的实例中心以螺旋轨迹飞行。我无法解决的问题是火箭的轨迹与行星的旋转无关。 这是火箭的Update()函数:

void Update () {
     angle += speed * Time.deltaTime;
     x = Mathf.Cos (angle) * radius;
     z = Mathf.Sin (angle) * radius;
     rb.velocity = new Vector3(x,0.0f,z);
     radius += stepOfRadius;
 }

我拥有的: enter image description here

我希望它如何(没有月亮并返回地球): enter image description here

1 个答案:

答案 0 :(得分:0)

我对unity3d了解不多,但x和z似乎是位置的组成部分,而不是速度。

如果可能,请尝试替换

rb.velocity = new Vector3(x,0.0f,z);

通过

rb.position = new Vector3(x,0.0f,z);

Vector3 position(x,0.0f,z);
rb.MovePosition(position);

否则,您可以通过定义此速度分量来保持rb.velocity(我认为speed是一个角速度):

 x = (stepOfRadius/Time.deltaTime) * Mathf.Cos(angle) - radius * speed * Mathf.Sin(angle);
 z = (stepOfRadius/Time.deltaTime) * Mathf.Sin(angle) + radius * speed * Mathf.Cos(angle);