Eh? How about having both camera views?
WASD to move around, v to toggle between 1st and 3rd person view, ctrl to enter the car if you're close enough...
sync on
sync rate 0
hide mouse
autocam off
player = 1
car = 2
windshield = 3
floor = 4
windshield_tex = 1
create bitmap 1,300,100
set current bitmap 1
cls rgb(127,0,0)
ink 0,0
box 10,10,290,90
get image windshield_tex,0,0,300,100
set current bitmap 0
delete bitmap 1
make object cylinder player,1
make object box car,1,1,1
make object plain windshield,1,1
make object plain floor,500,500
scale object player,400,600,400
scale object car,1400,600,2400
scale object windshield,1400,300,100
color object car,rgb(127,32,0)
texture object windshield,windshield_tex
set object windshield,1,0,0,0
set object rotation zyx windshield
xrotate object floor,90
color object floor,rgb(0,128,32)
carX# = 150.0
carY# = 3.0
carZ# = 150.0
carAngY# = 0.0
playerX# = 50.0
playerY# = 3.0
playerZ# = 50.0
playerAngX# = 0.0
playerAngY# = 45.0
camX# = 0.0
camY# = 0.0
camZ# = 0.0
camAngX# = 0.0
camAngY# = 0.0
inVehicle = 0
playerView = 0
do
gosub _Input
gosub _UpdateCar
gosub _UpdatePlayer
gosub _UpdateCam
sync
loop
_Input:
if controlkey()
if oldctrl = 0
ctrl = 1
else
ctrl = 0
endif
oldctrl = 1
else
oldctrl = 0
ctrl = 0
endif
if keystate(47)
if oldv = 0
v = 1
else
v = 0
endif
oldv = 1
else
oldv = 0
v = 0
endif
if v = 1
if playerView = 0 then playerView = 1 else playerView = 0
endif
return
_UpdatePlayer:
if inVehicle = 0
playerAngX# = wrapvalue(playerAngX# + mousemovey()*0.25)
playerAngY# = wrapvalue(playerAngY# + mousemovex()*0.25)
if keystate(17)
playerX# = newxvalue(playerX#,playerAngY#,1.0)
playerZ# = newzvalue(playerZ#,playerAngY#,1.0)
endif
if keystate(31)
playerX# = newxvalue(playerX#,playerAngY#,-1.0)
playerZ# = newzvalue(playerZ#,playerAngY#,-1.0)
endif
if keystate(30)
playerX# = newxvalue(playerX#,wrapvalue(playerAngY#-90.0),1.0)
playerZ# = newzvalue(playerZ#,wrapvalue(playerAngY#-90.0),1.0)
endif
if keystate(32)
playerX# = newxvalue(playerX#,wrapvalue(playerAngY#+90.0),1.0)
playerZ# = newzvalue(playerZ#,wrapvalue(playerAngY#+90.0),1.0)
endif
playerY# = 3.0
else
playerAngX# = wrapvalue(playerAngX# + mousemovey()*0.25)
playerAngY# = carAngY#
playerX# = newxvalue(carX#,wrapvalue(carAngY#-45.0),3.0)
playerZ# = newzvalue(carZ#,wrapvalue(carAngY#-45.0),3.0)
playerY# = 5.0
endif
position object player,playerX#,playerY#,playerZ#
rotate object player,0.0,playerAngY#,0.0
return
_UpdateCar:
if inVehicle = 1
if keystate(17)
carX# = newxvalue(carX#,carAngY#,2.0)
carZ# = newzvalue(carZ#,carAngY#,2.0)
endif
if keystate(31)
carX# = newxvalue(carX#,carAngY#,-1.5)
carZ# = newzvalue(carZ#,carAngY#,-1.5)
endif
if keystate(30)
carAngY# = wrapvalue(carAngY#-2.0)
endif
if keystate(32)
carAngY# = wrapvalue(carAngY#+2.0)
endif
if ctrl = 1
inVehicle = 0
playerX# = newxvalue(carX#,wrapvalue(carAngY#-90.0),12.0)
endif
else
if ctrl = 1
if (playerX#-carX#)^2+(playerZ#-carZ#)^2 <= 160
inVehicle = 1
endif
endif
endif
position object car,carX#,carY#,carZ#
rotate object car,carAngX#,carAngY#,carAngZ#
position object windshield,newxvalue(carX#,carAngY#,5.0),8.0-(sqrt(2.0)/2.0),newzvalue(carZ#,carAngY#,5.0)
rotate object windshield,150.0,carAngY#,0.0
return
_UpdateCam:
if inVehicle = 0
if playerView = 0
camX# = playerX#
camY# = playerY# + 2.5
camZ# = playerZ#
camAngX# = playerAngX#
camAngY# = playerAngY#
else
camX# = newxvalue(playerX#,wrapvalue(playerAngY#+180.0),25.0)
camY# = newyvalue(playerY#,playerAngX#,-25.0)
camZ# = newzvalue(playerZ#,wrapvalue(playerAngY#+180.0),25.0)
camAngX# = playerAngX#
camAngY# = playerAngY#
endif
else
if playerView = 0
camX# = playerX#
camY# = playerY# + 2.5
camZ# = playerZ#
camAngX# = 0.0
camAngY# = carAngY#
else
camX# = newxvalue(carX#,wrapvalue(carAngY#+180.0),25.0)
camY# = newyvalue(playerY#,playerAngX#,-25.0)
camZ# = newzvalue(carZ#,wrapvalue(carAngY#+180.0),25.0)
camAngX# = playerAngX#
camAngY# = carAngY#
endif
endif
position camera camX#,camY#,camZ#
rotate camera camAngX#,camAngY#,0.0
return
Sorry, but I just did this now and I have no time to rem it... And don't complain about physics >_< It should be easy enough to understand though, just check what the view angle is and adjust the values depending on that.
BTW, I don't really understand your question.

Can you be a little more clear on that?