Показать сообщение отдельно
Старый 14.12.2007, 00:42   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Передвижение бота из пункта А в пункт В по вейпоинтам.

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

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 строчек.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям: