Как перемещать обтягивающее тело по траектории эллиптической орбиты и менять траекторию
Я искал ответ и еще не нашел. У меня есть эллиптическая траектория орбиты, и я хочу переместить орбитальное тело по траектории в трехмерном пространстве. Текущие попытки не сработали правильно. (объект замедляется при периапсисе и ускоряется при апоапсисе или просто разрывается со значениями NaN)
Доступны следующие значения: полуглавное, полуосновное, скорость, периапсис, апоапсис, текущее положение тела на орбите в градусах или радианах и обе массы + расстояние.
1 ответ
Дополнительная информация будет полезна. Но я рекомендую использовать единство, встроенное в компонент твердого тела. Вам нужно получить центр массы тела, над которым вы вращаетесь, и его массу, чем рассчитать силу G для расстояния между центром масс тела, над которым вы вращаетесь, до центра масс, подробнее об этом здесь https://www.physicsclassroom.com/class/circles/Lesson-3/Newton-s-Law-of-Universal-Gravitation возьмите этот вектор и умножьте его на ваше направление. Эта функция поможет вам сделать это https://docs.unity3d.com/ScriptReference/Quaternion.LookRotation.html После того, как вы получили направление, умноженное на использование силыRigidBody.AddForce()
и отправь свой вектор. Я предлагаю использовать Physics.OverlapSphere() for
эту задачу смотрите по https://docs.unity3d.com/ScriptReference/Physics.OverlapSphere.html И наденьте всю эту логику на тело, на котором вы вращаетесь. Все, что вам нужно сделать - это заставить тело, на котором вы хотите вращаться, находиться в нужном месте с правильной скоростью, и вы получите свои результаты. Просто убедитесь, что вы выключили гравитацию и правильно настроили массу