Graphics3D 640,480,32,2
SetBuffer BackBuffer()
TFormFilter 0
Dim side(35) ; used for the display
side(0)=LoadImage("hud_side.bmp")
For i=1 To 35
side(i)=CopyImage(side(0))
MidHandle side(i)
RotateImage(side(i)),i*10
Next
MidHandle side(0)
jet=CreatePivot()
PositionEntity jet,0,3,0
camera=CreateCamera(jet)
CameraRange camera,1,100000
CameraFogMode camera,1
CameraFogRange camera,100,100000
CameraFogColor camera,100,150,170
CameraClsColor camera,100,150,170
ground=CreatePlane()
tex=CreateTexture(1024,1024) ; create a random "landscape"
SetBuffer TextureBuffer(tex)
For i=0 To 5000
Color Rand(128,255),Rand(128,255),Rand(50,100)
Rect Rand(-100,1124),Rand(-100,1124),Rand(100),Rand(100),1
Next
SetBuffer BackBuffer()
ScaleTexture tex,10000,10000
EntityTexture ground,tex
speed#=0
EntityType ground,2
EntityType jet,1
Collisions 1,2,2,2
While KeyDown(1)=0
If KeyDown(200) Then
speed=speed+1
If speed >50 Then speed=50
EndIf
If KeyDown(208) Then
speed=speed-.1
If speed <0 Then speed=0
EndIf
button=GetJoy()
jxs$=JoyX()
jys$=JoyY()
jzs$=JoyZ()
If Instr(jxs$,"e")<>0 Then jxs$="0" ; prevent joystick rounding errors trough exponentional notation...
If Instr(jys$,"e")<>0 Then jys$="0"
If Instr(jzs$,"e")<>0 Then jzs$="0"
jx#=jxs$
jy#=jys$
jz#=jzs$
MoveEntity jet,0,0,speed ; forward
TranslateEntity jet,0,-1.0,0 ; down by gravity
rudl#=jy+(-jx) ; check rudders
rudr#=jy+jx
turnpitch#=-(rudl+rudr)/2.0
turnroll#=rudl-rudr
TurnEntity jet,turnpitch,0,turnroll
UpdateWorld()
RenderWorld()
; just some disply stuff
Color 255,255,255
Text 0,64,"Atlitude: "+ EntityY(jet)+" m"
Text 0,80,"Speed: "+speed
Oval 0,0,50,50,0
Line 25+Cos(EntityRoll(jet,1))*25,25+Sin(EntityRoll(jet,1))*25,50-(25+Cos(EntityRoll(jet,1))*25),50-(25+Sin(EntityRoll(jet,1))*25)
Line 25+Cos(EntityRoll(jet,1))*25,25+Sin(EntityRoll(jet,1))*25,50-(25+Cos(EntityRoll(jet,1)+90)*5),50-(25+Sin(EntityRoll(jet,1)+90)*5)
Line 50-(25+Cos(EntityRoll(jet,1))*25),50-(25+Sin(EntityRoll(jet,1))*25),50-(25+Cos(EntityRoll(jet,1)+90)*5),50-(25+Sin(EntityRoll(jet,1)+90)*5)
50-(25+Sin(EntityPitch(jet,1))*25)
wside=(18+(((EntityPitch(jet,1)+90.0)*2.0)/10.0))Mod 35
If wside>35 Then wside=36
If wside<0 Then wside=0
DrawImage side(wside),85,25
Text 120,25,"Pitch: "+EntityPitch(jet,1)
Flip
Wend
It uses a joystick. First press the Cursor Up key to accellerate. THen pull back the Joystick to lift off. It's using a 50*50 Pixel sideview image of a jetfighter, but as I described, the display stuff don't works as I wanted. The solution I explained in my lates post isn't implemented here.
But of course, like in any 3D game, you need to remain inside a range of -32000 to 32000 to prevent zbuffer inaccuracies (that would result in wobbling geometry)