Перейти к содержимому

Unit Radar

Тот же радар, только смотрит не от здания, а от вашего юнита — и его дальностью

среднийНужно знать: Найти юнита, Привязка по типу
тик 0
Связь с юнитом0
тип
Радар юнита1
target1target2target3сортировкаradarsortOrderвыход
Радар юнита2
target1target2target3сортировкаradarsortOrderвыход
Информация3
=
у
Информация4
=
у
Информация5
=
у
@counter0number
ближнийnullnull
дальнийnullnull
xБлижнегоnullnull
xДальнегоnullnull
дальностьnullnull
ubind @dagger
uradar enemy any any distance 0 1 ближний

Кинжал ищет врагов вокруг себя: ближний — вспышка на девятой клетке, а тот же поиск с нулём в предпоследнем поле отдаёт дальнюю, на четырнадцатой.

Поля у uradar те же, что у radar: три условия отбора, чем мерить, кого считать первым. Разница одна, и она в пятом поле.

radar uradar
смотрит от здания из пятого поля привязанного юнита
дальность дальность этого здания дальность самого юнита
пятое поле здание не используется, пишут 0

Пятого поля у uradar фактически нет: источник всегда @unit, и ноль там стоит просто для порядка. Нет привязки — нет и поиска: ответом будет пустота.

Дальность берётся у юнита и у всех разная: у кинжала это 18.25 клетки, у вспышки заметно меньше, у большого юнита — заметно больше. Спросить её можно у него самого:

sensor дальность @unit @range
тик 0
Связь с юнитом0
тип
Радар юнита1
target1target2target3сортировкаradarsortOrderвыход
Информация2
=
у
Информация3
=
у
Стоп4
@counter0number
свойnullnull
ктоЭтоnullnull
яСамnullnull

Кинжал ищет своих — и находит поли, а не себя. Это встроенное правило: источник поиска из списка исключается.

Иначе поиск союзника был бы бесполезен: ближайший к юниту свой — всегда он сам, и uradar ally any any distance возвращал бы того же юнита, которого только что привязали.

uradar пересчитывает цель раз в 40 тиков, и это не то же окно, что у обычного радара: у здания оно тридцатитиковое, а у юнита своё, потому что живёт не в инструкции, а в том самом управлении, которое ubind и ucontrol вешают на юнита. В промежутке uradar отдаёт то, что нашёл в прошлый раз, — даже если цель улетела или погибла.

Оттуда же следует и вторая особенность: uradar берёт юнита под управление. Ему нужен тот же контроллер, что и командам, и он его заводит — просто не отдаёт никаких приказов.

Две трети секунды — немного, но для юнита это ощутимо: он и сам движется, и цель движется. Поэтому наведение стрельбой (ucontrol targetp) отдают каждую итерацию: пусть цель и устаревшая, но команда свежая.

Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.