Сенсоры Collision, Near и Radar

В практической работе прошлого урока воздействие силы на шар могло быть длительным или коротким, в зависимости от того, как долго нажималась клавиша. Это влияло на конечный результат, так как чем дольше прикладывается сила, тем сильнее разгоняется шар. В реальности же предполагается, что объект получает импульс в момент одиночного удара, то есть сила действует кратковременно.

Как в Blender сделать так, чтобы, независимо от длительности нажатия, клавиша срабатывала только короткий промежуток времени или только тогда, когда объект находится в определенной зоне? Устанавливать ограничения можно разными способами. В этом уроке будут рассмотрены сенсоры коллизии, близости и радара.

Отметим, что у всех сенсоров есть кнопка Tap, которая заставляет срабатывать контроллер единожды. Однако этот вариант не всегда подходит, так как действие получается слишком кратковременным. Например, если к динамическому телу прикладывается сила, то в случае Tap ее значение должно быть намного больше, чтобы за один игровой такт сдвинуть объект.

Сенсор Collision

Сенсор Collision срабатывает, когда объект сталкивается или касается другого объекта. Взаимодействия можно ограничить определенным свойством-переменной или материалом. Допустим, шар получает "пинок", только если находится на небольшой платформе.

Шар касается платформы

На рисунке роль платформы играет плоскость белого цвета под шаром. Сам шар должен быть Rigid Body, возможно – Dynamic, но не Soft Body, так как для последнего коллизия не работает.

Выделим платформу и добавим ей свойство, которое назовем toucher.

Назначение свойства объекту

Тип (в данном случае Integer) и значение (в данном случае 0) не важны. Сенсор Collision будет проверять только наличие определенного свойства у объекта.

После этого выделим шар и добавим сенсор Collision, который будет проверять касание с объектом, обладающим свойством toucher. Свяжем этот сенсор с существующим контроллером, который уже связан с сенсором Keyboard.

Проверка коллизии

Контроллер должен быть типа AND. В этом случае он будет запускать активатор, только если оба сенсора шлют положительный сигнал, т. е. происходит нажатие клавиши и касание платформы. Также следует увеличить модуль силы, так как теперь она действует кратковременно, и набранной за это время скорости может не хватить для разбивания стены.

Если включить кнопку M/P в настройках Collision, то вместо свойства платформы можно указать назначенный ей материал. Результат будет таким же.

Столкновение с материалом

Сенсор Near

Сенсор Near проверяет, находится ли объект, которому устанавливается данный сенсор, в близости от другого объекта, обычно обладающего указываемым свойством-переменной.

Настройка сенсора Near

При этом у объекта, чье свойство указывается (назовем этот объект тачером), должен быть включен флажок Actor на вкладке Physics редактора свойств.

Через параметр Distance определяется минимальное расстояние между объектами для срабатывания сенсора Near. Единицей измерения является блендер-единица, т. е. длина клетки сетки.

Параметр Reset Distance определяет расстояние, когда сенсор сбрасывается. Так в примере на рисунке выше сенсор сработает, когда шар окажется на расстоянии 0.3 и менее от плоскости. Отключится – когда шар выйдет за пределы расстояния в 0.5. Можно указать равные значения Distance и Reset Distance, сделав границу четкой.

Если использовать только сенсор Near, без Keyboard, то шар, упав на плоскость, получит импульс без действий пользователя.

Сенсор Radar

Сенсор Radar создает невидимый конус, вершина которого находится в центральной точке объекта, угол при вершине задается параметром Angle, Distance определяет длину конуса. Конус может быть направлен как в положительных, так и отрицательных направлениях осей.

Представьте, что шар находится над платформой и под действием гравитации падает на нее. Тогда если настройки радара будут такими как на рисунке ниже, то конус будет выходить из центральной точки шара, иметь длину в 2 единицы, его основание окажется под вершиной, т. е. конус будет расширяться в отрицательном направлении локальной оси Z объекта.

Настройка сенсора Radar

Когда платформа попадет в зону действия конуса радара, то сенсор посылает на контроллер положительный сигнал.

Практическая работа

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

Радар обнаруживающий другие объекты

Для выполнения практической работы вам понадобятся сенсор и активатор Message (сообщение). Исследуйте их возможности самостоятельно.

Создано

Обновлено