Как задать для объекта определенную скорость движения (Blender Game Engine)

Цель: задать для объекта определенную скорость перемещения.

В активаторе Motion параметр Loc измеряется в неизвестно каких единицах. Это и не существенно, если важно различие в скоростях. Например, если один объект должен двигаться медленно, а другой - в два раза быстрее, то можно для одного установить значение 0.02, а для другого - 0.04.

Однако может потребоваться знать скорость объекта или расстояние, которое он проходит за определенное время. Поэтому необходимо каким-либо образом вычислить, какой скорости соответствует 1 "блендоровский" Loc.

Если известно расстояние и время, то можно определить скорость: V = s/t. Далее вывести соответствие между скоростью в Loc и реальных единицах (м/с).

Описание модели

На панели Scene в разделе Units включаем кнопку Metrics (хотя можно обойтись и без этого).

Вид сверху.

N. Задаем для плоскости определенный размер по оси x (Dimenstions).

Для сферы создаем свойство timer, два сенсора (Always и Property). Для property-timer задаем значение интервала от 0 до 1 (т.е. движение будет длится 1 секунду).

Активатор Motion. Устанавливаем какое-либо значение Loc. Запускаем игру и смотрим, проходит ли сфера за 1 сек длину плоскости. Методом подбора находим такие значения длины плоскости и параметра Loc, чтобы шар точно преодолевал расстояние от начала плоскости до ее конца. Например, было выяснено, что при длине плоскости в 6 м, шар проходит это расстояние за 0.1 Loc. Т.е. скорость в 0.1 Loc соответствует 6 м/с. Следовательно, за 0.05 Loc - 3 м/с, а 0,01 Loc - 0,06 м/с.

Поскольку значение Loc можно задавать только до сотых, то это накладывает ограничения на возможность установить точную скорость. Определим, какому значению Loc соответствует скорость в 1 м/с:
0.1 - 6 (м/с)
x - 1 (м/с)
следовательно x = (0.1 * 1)/6 ~ 0.0166(6). В Blender2.6 можно будет вписать только округленное до сотых значение (0.02).

Прикрепленный файлРазмер
units.blend652.99 кб