Вроде работает...но !
Я пишу так :
;move mode init
Select unit01\movemode
Case 1
If pickhover<>0
If EntityName$(pickhover)="Ground"
PositionEntity move_icon,PickedX(),.1,PickedZ()
ShowEntity move_icon
EndIf
EndIf
Case 0
If unit01\movemode=0 Then HideEntity move_icon
Case 2
dis#=EntityDistance#(unit01\pivot,move_icon)
If unit01\movemode=2 And dis>.5 Then
PositionEntity move_icon,unit01\wpx,.01,unit01\wpz
PointEntity unit01\pivot,move_icon
MoveEntity unit01\pivot,0,0,.5
Else If dis<=.5 And dis>0 Then
MoveEntity unit01\pivot,0,0,dis
Else If dis=0 Then
unit01\movemode=0
EndIf
End Select
movemode 0 - юнит стоит на месте.
movemode 1 - состояние выбора точки на земле для помещения waypoint.
movemode 2 - юнит в движении.
move_icon это waypoint, который остается на земле при клике, и к которому идет юнит. Когда юнит достигает цели картинка move_icon должна прятаться.
Большую часть времени юнит точно достигает цели, то есть расстояние между юнитом и целью становится равно нулю. Но иногда что-то сглючивает, и movemode так и остается равным 2, хотя юнит достиг цели. А расстояние от юнита до цели при этом становится равным чему-то вроде 1.190059e-007 и тому подобное.
Кстати, как бы еще заставить юнит поворачиваться к waypoint плавно, а не в один фрейм ?
Я пытался сделать так : припарентил к юниту еще один пивот, pointentity его на waypoint, затем считал его entityyaw в переменную, и хотел использовать разницу между этой переменной и entityyaw самого юнита, но не тут-то было, в большинстве случаев юнит достигает цели и начинает бесконечно кружить на месте...