Вращение игрока вместе с платформой без parent.

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

Вращение игрока вместе с платформой без parent.

Сообщение Инженер 15 сен 2021, 21:53

Я использую платформы с rigidbody, движимые AddForce и самописный контроллер игрока. С движущимися платформами справился быстро: если персонаж контактирует с платформой и у платформы есть rigidbody, то беру velocity этой платформы, которое передаю персонажу. Но с вращением сложнее! Ведь при нахождении на вращающейся платформе, нам нужно двигать и вращать его соответственно расстоянию от центра вращения. При этом платформа может стоять неподвижно и только angularVelocity вращает ее вокруг одной или более осей, при этом персонаж должен не только вращаться, но и двигаться вокруг центра вращения платформы. То есть описывать круг, если платформа совершает круговое движение.

Я думаю, можно передать персонажу угловую скорость так: берем angularVelocity платформы и делим ее на квадрат расстояния до персонажа. Причем берем только глобальные X и Z, т.к. нас интересует только горизонталь. Получаем angularVelocity персонажа. Не тестировал, может ошибаюсь.

Но с вычислением вектора смещения, который испытывает персонаж относительно платформы, совсем не понимаю, что делать. Может что подскажете?
Инженер
UNIт
 
Сообщения: 88
Зарегистрирован: 22 май 2016, 11:13

Re: Вращение игрока вместе с платформой без parent.

Сообщение Инженер 16 сен 2021, 18:09

Пока никто не помог, думаю сам. Вероятно, можно получить смещение из тех же данных, что и поворот: угловое вращение платформы и расстояние до игрока. Если представить, что персонаж стоит в центре вращения платформы, то он ни на сколько не сдвигается. Если он отойдет от центра вращения на сантиметр, то он будет двигаться совсем немного по кругу вокруг центра. Отойдет еще дальше- радиус еще увеличится.

Из вектора вращения платформы каким-то образом можно получить вектор смещения персонажа. И чем больше расстояние между ними, тем сильнее меняется направление и скорость движения персонажа. Т.е. надо смотреть в сторону комбинации angularVelocity и дистанции. Эх, надо было лучше учить геометрию в свое время... Кто же знал, что она когда-нибудь понадобится. X(
Инженер
UNIт
 
Сообщения: 88
Зарегистрирован: 22 май 2016, 11:13

Re: Вращение игрока вместе с платформой без parent.

Сообщение Инженер 17 сен 2021, 13:49

Пфф.. Оказывается, есть готовый метод Rigidbody.GetPointVelocity(). :)
Инженер
UNIт
 
Сообщения: 88
Зарегистрирован: 22 май 2016, 11:13


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

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

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