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

Измерить вертикальную скорость в локальной системе координат

СообщениеДобавлено: 25 май 2020, 18:52
Sandirk
Здравствуйте.

Для правильной работы скрипта нужно измерять скорость движения компонента RigidBody в локальной системе координат.

Пробовал измерять скорость скриптом ниже, однако он измеряет вертикальную скорость в глобальной системе координат.
Синтаксис:
Используется csharp
var k = RigBody.velocity.y;
 


Не знаю, как указать систему координат этому "Спидометру". Подскажите идею пожалуйста.

Заранее спасибо.

Re: Измерить вертикальную скорость в локальной системе координат

СообщениеДобавлено: 25 май 2020, 19:13
waruiyume
transform.InverseTransformDirection(RigBody.velocity)
или так
Quaternion.Inverse(transform.rotation)*RigBody.velocity

Re: Измерить вертикальную скорость в локальной системе координат

СообщениеДобавлено: 25 май 2020, 19:14
1max1
Что значит скорость в локальных координатах?

Re: Измерить вертикальную скорость в локальной системе координат

СообщениеДобавлено: 25 май 2020, 19:22
Sandirk
1max1 писал(а):Что значит скорость в локальных координатах?


Привожу пример:

Тело падает будучи повёрнутым на 90 градусов относительно горизонта.

Скорость, измеряемая в глобальной системе координат, будет равна скорости падения объекта. (Изменению координаты Y за единицу времени)

Скорость, измеряемая в локальной системе координат, будет равна нулю тк ось Y вместе с телом будет повёрнута относительно глобальной оси Y. Чтобы локальная скорость изменялось, тело нужно будет двигать относительно той оси, что повернулась на 90 градусов вместе с объектом.

Надеюсь понятно объяснил.

Re: Измерить вертикальную скорость в локальной системе координат

СообщениеДобавлено: 25 май 2020, 19:25
Sandirk
waruiyume писал(а):transform.InverseTransformDirection(RigBody.velocity)
или так
transform.rotation*RigBody.velocity


Спасибо за идею.

Vector 3 нельзя преобразовать в число (Float).
Код будет иметь ошибку в обоих случаях.

Код выглядит так:
Синтаксис:
Используется csharp
var k = transform.InverseTransformDirection(RigBody.velocity);

Test = k;

if (k < -5 & Thr > 10)
{
     /// ...
}
 

Может я что-то не понял?

Возможно его нужно ещё отдельно преобразовать в число. Если да, то как?

Re: Измерить вертикальную скорость в локальной системе координат

СообщениеДобавлено: 25 май 2020, 19:28
waruiyume
Изменил пример с кватернионом он должен быть инвертирован.
Возможно его нужно ещё отдельно преобразовать в число. Если да, то как?

Точка жыыы.
(transform.InverseTransformDirection(RigBody.velocity)).y

Re: Измерить вертикальную скорость в локальной системе координат

СообщениеДобавлено: 25 май 2020, 19:33
Sandirk
Точка жыыы.
(transform.InverseTransformDirection(RigBody.velocity)).y


Точно, про ось я и забыл. Спасибо большое.