Этот код что я написал работает криво, вернее движение дерганое из-за позиционирования но без него никак, нужно же как-то привязаться к виртуальной сетке. Помогите пожалуйста.
Function MoveToGrid(Entity=0,camera=0,A=17,B=31,C=30,D=32)
Local SpeedMove#=.04
Local SizeGrid=1
Local DX#,DZ#
;Обработка клавиш
If KeyHit(A) And movez=0 Then movez=1:EZM= EntityZ(Entity)+SizeGrid: timeout=1
If KeyHit(B) And movez=0 Then movez=2:EZM= EntityZ(Entity)-SizeGrid: timeout=1
If KeyHit(C) And movez=0 Then movez=3:EXM= EntityX(Entity)-SizeGrid: timeout=1
If KeyHit(D) And movez=0 Then movez=4:EXM=EntityX(Entity)+SizeGrid: timeout=1
If KeyDown(A) And movez=0 Then movez=1:EZM= EntityZ(Entity)+SizeGrid: timeout=1
If KeyDown(B) And movez=0 Then movez=2:EZM= EntityZ(Entity)-SizeGrid: timeout=1
If KeyDown(C) And movez=0 Then movez=3:EXM= EntityX(Entity)-SizeGrid: timeout=1
If KeyDown(D) And movez=0 Then movez=4:EXM=EntityX(Entity)+SizeGrid: timeout=1
;Перемещение тела по сетке
If movez=1
EZ=EntityZ(Entity)
MoveEntity Entity,0,0,SpeedMove
If EZ>=EZM
PositionEntity Entity,EntityX(Entity),EntityY(Entity),EZM
movez=0
EndIf
EndIf
;-----------------------------------------------------------------------------------------------
If movez=2
EZ=EntityZ(Entity)
MoveEntity Entity,0,0,-SpeedMove
If EZ<=EZM
PositionEntity Entity,EntityX(Entity),EntityY(Entity),EZM
movez=0
EndIf
EndIf
;-----------------------------------------------------------------------------------------------
If movez=3
EX=EntityX(Entity)
MoveEntity Entity,-SpeedMove,0,0
If EX<=EXM
PositionEntity Entity,EXM,EntityY(Entity),EntityZ(Entity)
movez=0
EndIf
EndIf
;-----------------------------------------------------------------------------------------------
If movez=4
EX=EntityX(Entity)
MoveEntity Entity,SpeedMove,0,0
If EX>=EXM
PositionEntity Entity,EXM,EntityY(Entity),EntityZ(Entity)
movez=0
EndIf
EndIf
timeout=timeout-0.01
If timeout<0
movez=0
timeout=0
EndIf
;-----------------------------------------------------------------------------------------------
;Смякчение движения камеры
DX#=EntityX(Entity,True)-EntityX(camera,True)
DZ#=EntityZ(Entity,True)-EntityZ(camera,True)
TranslateEntity camera,DX*.05,0,DZ*.05
End Function