Краткое руководство по команде setvelocity и setdir. _obj - это будет танк
// обязательно отнимаем топливо, чтобы команда setdir работала корректно. В противном случае танк будет все время поворачивать обратно, чтобы вернуться в свое первоначальное положение (т.е. встать под исходным углом так как был поставлен на карту)
_obj setfuel 0
_angle = угол поворота. Можно задавать как положительное, так и отрицательное число
задаем скорость движения и радиус поворота
_x=5
_y=5
_х2=1
_у2=1
_i=0 - параметр для задания длительности движения в заданном направлении
//переменная _j нужна для того, чтоб сделать скрипт универсальным для поворота налево и направо
? (_angle<0): _j=-1
? (_angle>0): _j=1
? (_angle==0): _j=0
Чтобы юнит поехал прямо (т.е. в том направлении, в котором он смотрит)
#start1
_obj setvelocity [_x*sin(getdir _obj),_y*cos(getdir _obj),0] // данная команда будет корректно двигать танк вперед независимо от того, под каким углом он поставлен на карте.
_i=_i+1
_i>=2900): goto "next" // продолжительность - 2900 циклов - число подбирается опытным путем
goto "start1"
теперь повернем
#next
_i=0 // теперь _i поможет нам отследить угол поворота и определить скорость поворота. Обнулим его.
_initdir=getdir _obj // определим исходный угол поворота танка
~1
для поворота нам надо не только двигать танк вперед, но и менять его угол командой setdir
#start2
_obj setvelocity [_x2*sin(getdir _obj),_y2*cos(getdir _obj),0]
_obj setdir (_initdir-_i*_j)
_i=_i+0.1 // 0.1 - это приращение угла поворота. Чем больше это число, тем быстрее повернет танк
_i>=abs(_angle)): goto "next2" // прекратим поворот как только _i станет по модулю больше, чем угол поворота. Модуль нужен, чтоб отслеживать повороты как налево, так и направо.
goto "start2"
#next2
Далее аналогично можно задать любые перемещения. Не забудьте обнулять _i и обновлять параметр _initdir
Существует еще команда setformdir.
unit setformdir 240
Она заставляет юнит повернуть на заданный угол ПО ЧАСОВОЙ СТРЕЛКЕ. Она корректно работает на заправленной технике.