Try this, you can also specify where the camera should point at, relative to the entity:
Graphics3D 800,600
SetBuffer BackBuffer()
player = CreateCube()
camera = CreateCamera()
Dim cubes(20) ; create some surroundings
For loop = 0 To 20
cubes(loop) = CreateCube()
EntityColor cubes(loop),Rand(0,255),Rand(0,255),Rand(0,255)
PositionEntity cubes(loop),Rnd(-29,29),0,Rnd(-29,29)
Next
While Not KeyHit(1)
If KeyDown(200) Then MoveEntity player,0,0,0.1
If KeyDown(208) Then MoveEntity player,0,0,-0.1
If KeyDown(203) Then TurnEntity player,0,1,0
If KeyDown(205) Then TurnEntity player,0,-1,0
; CameraUpdate(camera,player,0,5,-5,0,-4,0)
CameraUpdate(camera,player,0,5,-5,0,2,0)
RenderWorld
Flip
Wend
End
Function CameraUpdate(camera,ent,camx#,camy#,camz#,aimx#=0,aimy#=0,aimz#=0,smoothcam#=0.1,roll#=0)
TFormPoint camx#,camy#,camz#,ent,0
dx#=(TFormedX()-EntityX(camera))*smoothcam#
dy#=(TFormedY()-EntityY(camera))*smoothcam#
dz#=(TFormedZ()-EntityZ(camera))*smoothcam#
TranslateEntity camera,dx,dy,dz
TFormPoint aimx#,aimy#,aimz#,ent,0
dx# = EntityX(camera)-TFormedX()
dy# = EntityY(camera)-TFormedY()
dz# = EntityZ(camera)-TFormedZ()
dist#=Sqr#((dx#*dx#)+(dz#*dz#))
pitch#=ATan2(dy#,dist#)
yaw#=ATan2(dx#,-dz#)
RotateEntity camera,pitch#,yaw#,roll#
End Function