Показать сообщение отдельно
Старый 23.04.2012, 18:11   #16
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
Ответ: Круглый радар

Сообщение от Gector Посмотреть сообщение
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()

Global Player=CreateCube()
Cam=CreateCamera(Player): PositionEntity Cam,0,3,-5
Global Cube=CreateCube(): PositionEntity Cube,2,0,10: EntityColor Cube,255,0,0

Global RadarMap=CreateImage(512,512)
SetBuffer ImageBuffer(RadarMap)
	For i=0 To 10
		Color Rand(255), Rand(255), Rand(255)
		Rect Rand(0,512),Rand(0,512), Rand(0,512),Rand(0,512)
	Next 
SetBuffer BackBuffer()
MidHandle RadarMap

Global RadarMask=CreateImage(256,256)
SetBuffer ImageBuffer(RadarMask)
	Color 0,0,0
	Rect 0,0,256,256
	Color 255,255,255
	Oval 0,0,256,256
SetBuffer BackBuffer()
MaskImage RadarMask,255,255,255

Function Radar()
	Local Image=CreateImage(256,256)
	SetBuffer ImageBuffer(Image)
		Cls
		DrawImage RadarMap,-(512/400)*EntityX(Player),(512/400)*EntityZ(Player)
		Color 255,0,0
                ; Куб впереди игрока на радаре определяется относительно самого игрока
		Rect (256/2)+(512/400)*(EntityX(Cube)-EntityX(Player)),(256/2)-(512/400)*(EntityZ(Cube)-EntityZ(Player)),5,5
                ;Линия указывающая направление. В твоем случае нужно просто установить угол.
		Line 256/2,256/2,(256/2)+Cos(-1*(EntityYaw(Player)+90))*10,(256/2)+Sin(-1*(EntityYaw(Player)+90))*10
		DrawImage RadarMask,0,0
	SetBuffer BackBuffer()
	DrawImage Image,(GraphicsWidth()/3)*2,(GraphicsHeight()/3)*2
End Function

Repeat
If KeyDown(17) MoveEntity Player,0,0,.5
If KeyDown(31) MoveEntity Player,0,0,-.5
If KeyDown(30) TurnEntity Player,0,1,0
If KeyDown(32) TurnEntity Player,0,-1,0
UpdateWorld
RenderWorld
Text 10,10,EntityYaw(Player)
Radar()
;DrawImage RadarMap,0,0
;DrawImage RadarMask,0,0
Flip
Until KeyHit(1)
End
Пояснения: 400- реальный размер карты, 512 ее рисунка.
нашлась проблемка -
у меня карта просто огромная а если тут писать размеры карты они больше размеров картинки и тогда карта перестаёт двигаться просто стоит в центре
(Offline)
 
Ответить с цитированием