Страница 1 из 1

Вертикальная ориентация персонажа на планете [Решено]

СообщениеДобавлено: 15 апр 2017, 01:09
Evgeniy_94
Здравствуйте
У меня на сцене есть персонаж и сфера, играющая роль планеты с гравитацией, реализованной следующим образом (скрипт висит на персонаже):
Синтаксис:
Используется 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;

    }


Помогите, пожалуйста, сделать так, чтобы персонаж всегда стоял прямо, т.е. его низ был направлен к центру планеты (ось у всегда проходила через центр планеты), но при этом было возможно вращение по оси у и свободное перемещение по планете

Я пытался использовать transform.LookAt(sphere), но в этом случае блокируется вращение и персонаж странно двигается, "вверх" по поверхности - прямо до полюсов планеты, а "вбок" - как по параллелям у глобуса.
Пробовал player.right = dir; -результат, примерно, такой же - вращение блокируется, двигается странным образом

Возможно, стоит использовать кватерион?

У меня проблемы при работе с векторами, сейчас изучаю линейную алгебру, но решения пока не вижу :(

Re: Вертикальная ориентация персонажа на планете с гравитацией

СообщениеДобавлено: 15 апр 2017, 10:21
EagleOwle
Научитесь пользоваться гуглом....
https://www.youtube.com/watch?v=gHeQ8Hr92P4

Re: Вертикальная ориентация персонажа на планете с гравитацией

СообщениеДобавлено: 15 апр 2017, 14:13
Evgeniy_94
Спасибо большое :)