In your Blitz3D 3D samples directory - look for the "mak" directory and you should have a folder called xfighter.
Should you not have it, it contains this function to fly a bi-plane:
Should you not have it, it contains this function to fly a bi-plane:
Function UpdatePlayer( p.Player ) Local x_dir,y_dir,z_dir Select p\ctrl_mode Case 1: If KeyDown(203) x_dir=-1 If KeyDown(205) x_dir=1 If KeyDown(200) y_dir=-1 If KeyDown(208) y_dir=1 If KeyDown(30) z_dir=1 If KeyDown(44) z_dir=-1 If KeyHit(59) p\cam_mode=1 If KeyHit(60) p\cam_mode=2 If KeyHit(61) p\cam_mode=3 If KeyHit(62) p\cam_mode=4 Case 2: x_dir=JoyXDir() y_dir=JoyYDir() If JoyDown(1) z_dir=1 If JoyDown(2) z_dir=-1 If KeyHit(63) p\cam_mode=1 If KeyHit(64) p\cam_mode=2 If KeyHit(65) p\cam_mode=3 If KeyHit(66) p\cam_mode=4 End Select If x_dir<0 p\yaw_speed=p\yaw_speed + (4-p\yaw_speed)*.04 Else If x_dir>0 p\yaw_speed=p\yaw_speed + (-4-p\yaw_speed)*.04 Else p\yaw_speed=p\yaw_speed + (-p\yaw_speed)*.02 EndIf If y_dir<0 p\pitch_speed=p\pitch_speed + (2-p\pitch_speed)*.2 Else If y_dir>0 p\pitch_speed=p\pitch_speed + (-2-p\pitch_speed)*.2 Else p\pitch_speed=p\pitch_speed + (-p\pitch_speed)*.1 EndIf p\yaw=p\yaw+p\yaw_speed If p\yaw<-180 Then p\yaw=p\yaw+360 If p\yaw>=180 Then p\yaw=p\yaw-360 p\pitch=p\pitch+p\pitch_speed If p\pitch<-180 Then p\pitch=p\pitch+360 If p\pitch>=180 Then p\pitch=p\pitch-360 p\roll=p\yaw_speed*30 RotateEntity p\entity,p\pitch,p\yaw,p\roll ;see if y/p/r funcs are working... t_p#=EntityPitch( p\entity ) t_y#=EntityYaw( p\entity ) t_r#=EntityRoll( p\entity ) RotateEntity p\entity,t_p,t_y,t_r If p\ignition If z_dir>0 ;faster? p\thrust=p\thrust + (1.5-p\thrust)*.04 ;1.5 Else If z_dir<0 ;slower? p\thrust=p\thrust + (-p\thrust)*.04 EndIf MoveEntity p\entity,0,0,p\thrust Else If z_dir>0 p\ignition=True EndIf If p\camera Select p\cam_mode Case 1: EntityParent p\camera,p\entity RotateEntity p\camera,0,p\yaw,0,True PositionEntity p\camera,EntityX(p\entity),EntityY(p\entity),EntityZ(p\entity),True MoveEntity p\camera,0,1,-5 PointEntity p\camera,p\entity,p\roll/2 Case 2: EntityParent p\camera,0 PositionEntity p\camera,EntityX(p\entity),EntityY(p\entity),EntityZ(p\entity) TranslateEntity p\camera,0,1,-5 PointEntity p\camera,p\entity,0 Case 3: EntityParent p\camera,p\entity PositionEntity p\camera,0,.25,0 RotateEntity p\camera,0,0,0 Case 4: EntityParent p\camera,0 PointEntity p\camera,p\entity,0 End Select EndIf End Function