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

Программирование на Юнити.

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

Сообщение Evgeniy_94 15 апр 2017, 01:09

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

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

У меня проблемы при работе с векторами, сейчас изучаю линейную алгебру, но решения пока не вижу :(
Последний раз редактировалось Evgeniy_94 17 апр 2017, 03:26, всего редактировалось 1 раз.
Evgeniy_94
UNец
 
Сообщения: 9
Зарегистрирован: 12 апр 2017, 19:21

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

Сообщение EagleOwle 15 апр 2017, 10:21

Научитесь пользоваться гуглом....
https://www.youtube.com/watch?v=gHeQ8Hr92P4
EagleOwle
UNIверсал
 
Сообщения: 493
Зарегистрирован: 02 янв 2015, 16:27

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

Сообщение Evgeniy_94 15 апр 2017, 14:13

Спасибо большое :)
Evgeniy_94
UNец
 
Сообщения: 9
Зарегистрирован: 12 апр 2017, 19:21


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10