如何基于接近物体的速度和相对位置计算transform.RotateAround的轨道轴

时间:2019-02-10 03:39:13

标签: c# unity3d

我正在尝试模拟一个进入行星轨道的小行星(以一种简化的方式-我不是要完美的现实主义)。这颗小行星接近行星附近的某个区域,并且在它飞离行星时最接近该行星的那个点,我将其运动切换为使用Transform.RotateAround绕行星运行。

我已经使它适用于从一个方向接近的小行星,但是小行星可以从任何方向接近,而且我不知道如何计算任何给定小行星的轴。

这本质上就是我所拥有的:

 if (orbiting)
 {
     transform.RotateAround(orbitTarget.position, orbitAxis, orbitSpeed);
 }
 else if (lastDistance < GetDistanceFromOrbitTarget())
 {              
     orbiting = true;
     orbitSpeed = thisRigidbody.velocity.magnitude;

     orbitAxis = ??? //How do I calculate this?
 }
 else
 {
     lastDistance = GetDistanceFromOrbitTarget());
 }

这是预期的结果: orbit gif

谢谢。

0 个答案:

没有答案