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 ее рисунка.