Как рассчитать ось орбиты для transform.RotateAround на основе скорости приближающегося объекта и относительного положения - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь смоделировать астероид, выходящий на орбиту планеты (в упрощенном виде - я не иду к идеальному реализму).Астероид приближается к области, близкой к планете, и в момент, когда он летит ближе всего к планете, я переключаю его движение на орбиту планеты, используя 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());
 }

Вот ожидаемый результат: GIF орбиты

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...