Okie ive hacked out the code the controls are commented, try turning the 'Ship' and rolling left and right at random then let the camera settle, after a bit it settles skewed.
Thanks again, very good of you to help
Graphics3D 800, 600, 32 SetBuffer BackBuffer() Global MainCam = CreateCamera() ; Global Camera Coords and info Global CamX# = 0 Global CamY# = 0 Global CamZ# = 0 Global CamZoom# = 1.5 ; Globals for Ship (Player) Global Ship1 ; Test ship Global Ship1X# =0 ; Ship X position Global Ship1Y# =0 ; Ship Y position Global Ship1Z# =0 ; Ship Z position Global SThrust# =0 ; Ships Set Speed Global SSpeed# =0 ; Ships Current Speed Global SAcc# =0 ; Ships Rate of Acceleration ; Globals for Pivots Global SPivot ; Ships Central Pivot Global TPivot ; Target pivot (both ship and cam points to this) Global CPivot ; Camera pivot (This is where the camera will rest at) Global CamPiv ; Camera Movement pivot (This the pivot the camera will be stuck to) Global MPivot ; Pivot for mouse movement TestShip() ; Main Game Loop While Not KeyHit(1) ; Start Main Game Loop Keys() Update() RenderWorld() Flip Wend End ; Create ship for control and tracking tests Function TestShip() SPivot = CreatePivot () ; Create Ship Central Pivot PositionEntity (SPivot, 0, 0, 0) Ship1 = CreateCube(SPivot) ScaleEntity (Ship1,1,1,2) TPivot = CreatePivot (SPivot) ; Create Target Pivot PositionEntity (TPivot, 0, 0, 40, 1) ; Position Target in front of ship PositionEntity ( MainCam, 0, 5,-20, 1 ) ; Position Camera behind ship CamPiv = CreatePivot() ; Create Camera Current Pivot PositionEntity (CamPiv, 0, 5,-20, 1) ; Position Behind Camera EntityParent (MainCam, CamPiv) ; Parent Camera to Pivot CPivot = CreatePivot (TPivot) ; Create Camera Rest Pivot PositionEntity (CPivot, 0, 5,-20, 1) ; Position Camera Rest Pivot MPivot = CreatePivot() ; Create 3D Mouse Position Pivot PositionEntity (MPivot, 0,0,40, 1) ; Move to +40 on Z Axis ; Set Ships Stats (Test) SAcc# = 0.01 ; Rate of Acceleration End Function ; Update Ship, Camera and Background Function Update() CamX# = EntityX(MainCam, 1) CamY# = EntityY(MainCam, 1) CamZ# = EntityZ(MainCam, 1) Ship1X# = EntityX(Ship1, 1) Ship1Y# = EntityY(Ship1, 1) Ship1Z# = EntityZ(Ship1, 1) TFormVector (0,0,1, SPivot, 0) SpX# = TFormedX() SpY# = TFormedY() ; Align Ship to +Z of SPivot SpZ# = TFormedZ() AlignToVector (Ship1, SpX#, SpY#, SpZ#, 3, 0.1) TFormVector (0,1,0, SPivot, 0) SpX# = TFormedX() SpY# = TFormedY() ; Align Ship to +Y of SPivot SpZ# = TFormedZ() AlignToVector (Ship1, SpX#, SpY#, SpZ#, 2, 0.1) TFormVector (0,1,0, CPivot, 0) SpX# = TFormedX() SpY# = TFormedY() ; Align Cam to +Y of CPivot SpZ# = TFormedZ() AlignToVector (MainCam, SpX#, SpY#, SpZ#, 2, 0.1 ) TFormVector (0,0,1, CPivot, 0) SpX# = TFormedX() SpY# = TFormedY() ; Align Cam to +Z of CPivot SpZ# = TFormedZ() AlignToVector (MainCam, SpX#, SpY#, SpZ#, 3, 0.1 ) ToPivX# = EntityX(TPivot, 1) - EntityX(MainCam, 1) ToPivY# = EntityY(TPivot, 1) - EntityY(MainCam, 1) ; Get Vector to TPivot ToPivZ# = EntityZ(TPivot, 1) - EntityZ(MainCam, 1) AlignToVector (CPivot, ToPivX#, ToPivY#, ToPivZ#, 3, 1) ; Point Rest Pivot at TPivot AlignToVector (CamPiv, ToPivX#, ToPivY#, ToPivZ#, 3, 1) ; Point CamPiv at TPivot SmoothMove ( CamPiv, CPivot, 0.1 ) ; Move Camera to rest smoothly ; Ship Movement MoveEntity (SPivot, 0, 0, SSpeed#) PositionEntity ( Ship1,EntityX(SPivot,1),EntityY(SPivot,1),EntityZ(SPivot,1),1 ) End Function ; Function for all key/mouse commands Function Keys() ; Ship Controls If KeyDown(200) TurnEntity (SPivot, 2,0,0) ; Up: Increase Pitch If KeyDown(208) TurnEntity (SPivot, -2,0,0) ; Down: Decrease Pitch If KeyDown(203) TurnEntity (SPivot, 0,2,0) ; Left: Increase Yaw (want to add tilt to pitch - If KeyDown(205) TurnEntity (SPivot, 0,-2,0) ; Right: Decrease Yaw turns for coolness) If KeyDown(16) TurnEntity (SPivot, 0,0,2) ; Q: Increase Roll If KeyDown(18) TurnEntity (SPivot, 0,0,-2) ; E: Decrease Roll ; Camera Controls If KeyDown(201) Then CamZoom = CamZoom + 0.1 ; PageUp: Increase Zoom If KeyDown(209) And CamZoom > 1.0 Then CamZoom = CamZoom - 0.1 ; PageDown: Decrease Zoom If KeyDown(199) Then CamZoom = 1.8 ; Home: Reset Zoom If CamZoom > 1.0 Then CameraZoom (MainCam, CamZoom ) ; Check Zoom no less than 1.0 If CamZoom < 1.0 Then CamZoom = 1.0 ; Test Move cam back and forward If KeyDown(210) Then MoveEntity(MainCam, 0,0,0.1) ; Insert: Move Cam forward If KeyDown(211) Then MoveEntity(MainCam, 0,0,-0.1) ; Delete: Move Cam back If KeyDown(30) And SThrust# < 5.0 ; A: Increase Thrust SThrust# = SThrust# + SAcc# EndIf If KeyDown(44) And SThrust# > 0.0 ; Z: Decrease Thrust SThrust# = SThrust# - SAcc# EndIf If SSpeed# < SThrust# Then SSpeed# = SSpeed# + SAcc# If SSpeed# > SThrust# Then SSpeed# = SSpeed# - SAcc# End Function ;Function for smooth movement from point A - B Function SmoothMove (Ent1, Ent2, Speed#) ; Ent1 is object i want to move, Ent2 is target X1# = EntityX(Ent1, 1) ; Object to moves coords Y1# = EntityY(Ent1, 1) Z1# = EntityZ(Ent1, 1) X2# = EntityX(Ent2, 1) ; Target coords Y2# = EntityY(Ent2, 1) Z2# = EntityZ(Ent2, 1) Xinc# = X2# - X1# Yinc# = Y2# - Y1# Zinc# = Z2# - Z1# TranslateEntity (Ent1, Xinc# * Speed# , Yinc# * Speed# , Zinc# * Speed# ) End Function
Thanks again, very good of you to help