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

Движение и остановка

Координаты в тайлах, команда живёт десять секунд, а «стоять» не значит «замереть»

тик 0
Связь с юнитом0
тип
Контроль юнита1
типxy
Информация2
=
у
Информация3
=
у
@counter0number
xnullnull
ynullnull
ubind @poly
ucontrol move 16 4 0 0 0

Две строки — и поли летит на клетку 16 4. Смотрите за x: он растёт, пока юнит в пути, и замирает около шестнадцати, когда тот долетел.

Поле Что в нём
первое move
второе и третье координаты цели в клетках
остальные у move не используются, пишут нули

Координаты те же, что у @x и @y: это клетки карты, а не мировые единицы. Поэтому «лететь к складу» — это sensor x container1 @x, sensor y container1 @y и те же числа в move.

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

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

Поэтому программа про юнитов почти всегда выглядит так: привязались, скомандовали, закончили итерацию — и снова с начала. Ничего лишнего в этом нет, повторная команда не сбивает юнита с пути.

тик 0
Связь с юнитом0
тип
Информация1
=
у
Прыжок -> 52
если
Контроль юнита3
типxy
Конец4
Контроль юнита5
тип
@counter0number
xnullnull

Здесь программа ведёт поли к 16 4, но как только x переваливает за десять, отдаёт ucontrol stop. Юнит после этого пролетает ещё несколько клеток по инерции — и x останавливается около семнадцати, дальше цели.

stop означает «больше никуда не веду», а не «стой на месте». Скорость гасит трение, и летающий юнит проезжает изрядно.

Команда Что делает
move прямо в точку, не разбирая дороги
approach к точке, но остановиться на заданном радиусе
pathfind в точку по дороге — наземный обойдёт стену
autoPathfind туда, куда юнит пошёл бы сам: к вражескому ядру
boost поднять наземного юнита в воздух, если он это умеет
idle ничего не делать, но остаться под управлением

approach пригождается, когда подлетать вплотную не надо: к турели, чтобы её починить, или к врагу на дальность выстрела. Радиус у неё в третьем поле и тоже в клетках.

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