Сообщение от MoKa
Реализуй простую сетку без перспективы. А затем x координату для отрисовки линий и вычисления ячейки на которую наводишь умножай на коэффициент перспективы который зависит от Y.
Готово.
|
Вот что значит правильная идея(подход) ,пара минут и готово решение .
Выкладываю то , что получилось
код:
Graphics 800,600
SetBuffer BackBuffer()
TileSizeX = 40
TileSizeY = 30
fov# = 50
While Not KeyHit(1)
Cls
mx# = MouseX() : my# = MouseY()
For y = 1 To 11
For x = -5 To 5
ScaleRatio# = fov/(fov+y)
px# = x*TileSizeX/ScaleRatio
py# = y*TileSizeY
If x<5 Then Line 400+px , py ,400+ ((x+1)*TileSizeX/ScaleRatio) , py
If y<11 Then Line 400+px , py ,400+ ((x)*TileSizeX/(fov/(fov+(y+1)))) , (y+1)*TileSizeY
; Plot 400+px , py
Next
Next
ym# = Floor#(my/TileSizeY)
xm# = Floor#(( (mx-400)/ TileSizeX*( (fov/(fov+ym)))+6 ))
If xm<11 And xm >0 And ym <11 And ym >0
Text mx,my-10,Int(xm)+" : "+Int(ym)
End If
Text 20,40,"X : "+Int(xm)
Text 20,60,"Y : "+Int(ym)
Flip
Wend
End