http://forum.thegamecreators.com/?m=forum_view&t=63718&b=6&p=0
Great fuction for camera control, and here's a demo of what you're looking for using that function:
SYNC ON:SYNC RATE 0:AUTOCAM OFF:HIDE MOUSE
MAKE OBJECT BOX 1,30,30,30
MAKE OBJECT BOX 2,50,50,50
POSITION OBJECT 2,0,0,100
ZOOM#=-300
MODE=1
DO
` Display some text so we know what buttons do what
TEXT 0,0,"Camera Control Function"
`Some basic controls
IF KEYSTATE(17)=1 THEN MOVE OBJECT 1,1:Moving=1
IF KEYSTATE(31)=1 THEN MOVE OBJECT 1,-1:Moving=1
IF KEYSTATE(30)=1 THEN MOVE OBJECT LEFT 1,1:Moving=1
IF KEYSTATE(32)=1 THEN MOVE OBJECT RIGHT 1,1:Moving=1
IF KEYSTATE(17)=0 AND KEYSTATE(31)=0 AND KEYSTATE(30)=0 AND KEYSTATE(32)=0
Moving=0
ENDIF
IF Moving=1
CameraControl(1,3,1,0,200,-300,0,100,0,.1,1,1,0,1,-70,30,0,0)
ENDIF
IF Moving=0
CameraControl(1,3,1,0,200,-300,0,100,0,.1,1,1,0,0,-70,30,0,0)
ENDIF
SYNC
LOOP
FUNCTION CameraControl(Object, Dummy, Mesh, X#, Y#, Z#, XTilt#,YTilt#,ZTilt#, Speed#, DumX, DumY, ObjX, ObjY, MaxUp#, MaxDown#, MaxLeft#, MaxRight#)
IF OBJECT EXIST(Dummy)=0
DIM CamX#(0)
DIM CamY#(0)
MAKE OBJECT TRIANGLE Dummy, 0,0,0,0,0,0,0,0,0
MAKE MESH FROM OBJECT Mesh, Dummy
ADD LIMB Dummy, 1, Mesh
DELETE MESH Mesh
ENDIF
IF OBJECT EXIST(Dummy)=1
OFFSET LIMB Dummy, 1, X#, Y#, Z#
IF Speed#=0
IF X#=0 AND Y#=0 AND Z#=0
POSITION CAMERA OBJECT POSITION X(Object),OBJECT POSITION Y(Object),OBJECT POSITION Z(Object)
POINT CAMERA OBJECT POSITION X(Object), OBJECT POSITION Y(Object), OBJECT POSITION Z(Object)
ENDIF
ENDIF
IF X#>0 OR Y#>0 OR Z#>0
POSITION OBJECT Dummy, OBJECT POSITION X(Object),OBJECT POSITION Y(Object), OBJECT POSITION Z(Object)
POSITION CAMERA LIMB POSITION X(Dummy, 1),LIMB POSITION Y(Dummy, 1),LIMB POSITION Z(Dummy, Object)
POINT CAMERA OBJECT POSITION X(Object)+XTilt#, OBJECT POSITION Y(Object)+YTilt#, OBJECT POSITION Z(Object)+ZTilt#
ENDIF
IF Speed#>0
IF X#=0 AND Y#=0 AND Z#=0
POSITION CAMERA OBJECT POSITION X(Object),OBJECT POSITION Y(Object),OBJECT POSITION Z(Object)
XROTATE CAMERA CamX#(0)
YROTATE CAMERA CamY#(0)
ENDIF
CamY#(0)=CamY#(0)+MOUSEMOVEX()*Speed#
CamX#(0)=CamX#(0)+MOUSEMOVEY()*Speed#
IF MaxUp#>0 OR MaxUp#<0
IF CamX#(0)<MaxUp# THEN CamX#(0)=MaxUp#
ENDIF
IF MaxDown#>0 OR MaxDown#<0
IF CamX#(0)>MaxDown# THEN CamX#(0)=MaxDown#
ENDIF
IF MaxLeft#>0 OR MaxLeft#<0
IF CamY#(0)<MaxLeft# THEN CamY#(0)=MaxLeft#
ENDIF
IF MaxRight#>0 OR MaxRight#<0
IF CamY#>MaxRight# THEN CamY#=MaxRight#
ENDIF
IF DumX=1
XROTATE OBJECT Dummy,CamX#(0)
ENDIF
IF DumY=1
YROTATE OBJECT Dummy,CamY#(0)
ENDIF
IF ObjX=1
XROTATE OBJECT Object, CamX#(0)
ENDIF
IF ObjY=1
YROTATE OBJECT Object, CamY#(0)
ENDIF
ENDIF
ENDIF
ENDFUNCTION CameraControl
If that's not what you're looking for you can always change the parameters to suit your needs, I did that sample code in minutes so Im sure if you worked at it for a while you'd get the effect you want.
<EDIT>
Woops I realize that the sample code I gave you isn't what you asked for. If you describe it some more I could make it, just a little confused with what you're asking for. Either way the function should handle what you want it'll just take some time to get the params right.