У меня на сцене есть персонаж и сфера, играющая роль планеты с гравитацией, реализованной следующим образом (скрипт висит на персонаже):
Синтаксис:
Используется csharp
public Transform sphere;
public Transform player;
public float gravity = -9.81f;
void FixedUpdate()
{
Vector3 dir = (player.position - sphere.position).normalized;
Physics.gravity = dir * gravity;
}
public Transform player;
public float gravity = -9.81f;
void FixedUpdate()
{
Vector3 dir = (player.position - sphere.position).normalized;
Physics.gravity = dir * gravity;
}
Помогите, пожалуйста, сделать так, чтобы персонаж всегда стоял прямо, т.е. его низ был направлен к центру планеты (ось у всегда проходила через центр планеты), но при этом было возможно вращение по оси у и свободное перемещение по планете
Я пытался использовать transform.LookAt(sphere), но в этом случае блокируется вращение и персонаж странно двигается, "вверх" по поверхности - прямо до полюсов планеты, а "вбок" - как по параллелям у глобуса.
Пробовал player.right = dir; -результат, примерно, такой же - вращение блокируется, двигается странным образом
Возможно, стоит использовать кватерион?
У меня проблемы при работе с векторами, сейчас изучаю линейную алгебру, но решения пока не вижу