пространство перемещения двумерное? допустим да.

Graphics3D 1024,768,32,1
cam=CreateCamera()
point=CreateCube()
EntityColor point,0,255,0
HideEntity point
EntityAlpha point,0.8
ground=CreatePlane()
EntityColor ground,128,64,16
PositionEntity cam,0,10,-50
PointEntity cam,ground
player=CreateSphere(16)
EntityColor player,0,0,255
HideEntity player
EntityBlend player,3
Type TPlayer
Field ent
Field curwaypoint
End Type
Const MAX_WAYPOINTS=100
Dim WayPoints(MAX_WAYPOINTS)
Const spiral=1
If spiral
da#=(360.0/MAX_WAYPOINTS)*5
dr#=100.0/MAX_WAYPOINTS
a#=0
r#=0
For i=1 To MAX_WAYPOINTS
a=a+da
r=r+dr
WayPoints(i)=CopyEntity(point)
ShowEntity WayPoints(i)
PositionEntity WayPoints(i),Sin(a)*r,0.5,Cos(a)*r
Next
Else
For i=1 To MAX_WAYPOINTS
WayPoints(i)=CopyEntity(point)
ShowEntity WayPoints(i)
PositionEntity WayPoints(i),Rnd(-100,100),0.5,Rnd(-100,100)
Next
EndIf
For i=1 To 10
p.TPlayer=New TPlayer
p\ent=CopyEntity(player)
ShowEntity p\ent
PositionEntity p\ent,Rnd(-100,100),0.5,Rnd(-100,100)
p\curwaypoint=Rand(1,MAX_WAYPOINTS-1)
Next
While Not KeyDown(1)
TurnEntity cam,MouseYSpeed()*0.5,0,0
TurnEntity cam,0,-MouseXSpeed()*0.5,0
RotateEntity cam,EntityPitch(cam),EntityYaw(cam),0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
;Само путешествие по вейпойнтам
For p.TPlayer=Each TPlayer
PointEntity p\ent,WayPoints(p\curwaypoint+1)
MoveEntity p\ent,0,0,0.1
If EntityDistance(p\ent,WayPoints(p\curwaypoint+1))<2
p\curwaypoint=p\curwaypoint+1
If p\curwaypoint=MAX_WAYPOINTS Then p\curwaypoint=0
EndIf
Next
RenderWorld
Flip
Wend
заметь, что само перемещение занимает всего 8 строчек.