rem Free flight example
rem by TheComet
rem setup screen
sync on
sync rate 60
backdrop on
color backdrop 0
hide mouse
rem user defined types
type vec3
x# as float
y# as float
z# as float
endtype
type PlayerVT
pos as vec3
angle as vec3
endtype
rem global variables
global CamDist# as float
global CamHeight# as float
global CamSmooth# as float
global PlayerSpeed# as float
global Player as PlayerVT
rem make spaceship
make object plain 1 , 0 , 0 : rem core object
make object box 2 , 10 , 10 , 50
glue object to limb 2 , 1 , 0
rem add wings
make object box 3 , 50 , 5 , 5
make mesh from object 1 , 3
delete object 3
add limb 2 , 1 , 1
delete mesh 1
rem make some random scenery objects
for n = 3 to 50
make object sphere n , rnd(300)+50
position object n , rnd(1000) - 500 , rnd(1000) - 500 , rnd(1000) - 500
set object wireframe n , 1
next n
rem set values
CamDist# = 120
CamHeight# = 10
CamSmooth# = 3
PlayerSpeed# = 5
rem main loop
do
rem get input from user
if upkey() then Player.angle.x# = curveangle(80 , Player.angle.x# , 20)
if downkey() then Player.angle.x# = curveangle(-80 , Player.angle.x# , 20)
if leftkey() then Player.angle.y# = wrapvalue(Player.angle.y# - 5) : Player.angle.z# = curveangle(60 , Player.angle.z# , 20)
if rightkey() then Player.angle.y# = wrapvalue(Player.angle.y# + 5) : Player.angle.z# = curveangle(-60 , Player.angle.z# , 20)
rem reset angles
Player.angle.x# = curveangle(0 , Player.angle.x# , 20)
Player.angle.z# = curveangle(0 , Player.angle.z# , 15)
rem rotate player
rotate object 1 , Player.angle.x# , Player.angle.y# , 0
rotate object 2 , 0 , 0 , Player.angle.z#
rem move player
move object 1 , PlayerSpeed#
rem get player positions
Player.pos.x# = object position x(1)
Player.pos.y# = object position y(1)
Player.pos.z# = object position z(1)
rem control camera
set camera to follow Player.pos.x# , Player.pos.y# , Player.pos.z# , Player.angle.y# , CamDist# , CamHeight# , CamSmooth# , 0
point camera Player.pos.x# , Player.pos.y# , Player.pos.z#
rem refresh screen
sync
rem end of main loop
loop
rem end
end
TheComet