It's possible that you don't understand all, because I'm using Fpsc and ODE (Open Dynamics Engine).
From FPS Creator Code source, using ODE (Open Dynamics Engine)
REM Grimper aux murs
ClimbObj=254
if keystate(21)
ClimbWall=1
else
ClimbWall=0
endif
If ClimbWall=1
`Création et reglages
if object exist(ClimbObj)=0
make object sphere ClimbObj, 50
position object ClimbObj, camera position x(), camera position y(), camera position z()
ode create dynamic sphere ClimbObj
ode set response ClimbObj,1 : ode set gravity ClimbObj,0
endif
if object exist(ClimbObj)=1 then rotate object ClimbObj, camera angle x(), camera angle y(), camera angle z()
`Mouvement de l'object de climbing
(plrkeyW)=0 : (plrkeyA)=0 : (plrkeyS)=0 : (plrkeyD)=0
if upkey() then inc MoveVar#, 0.5 : move object ClimbObj, MoveVar#
if downkey() then dec MoveVar#, 0.5 : move object ClimbObj, MoveVar#
if upkey()=0 and downkey()=0 then MoveVar#=0
`Réglages caméra
`ClimbCamx#=wrapvalue(object angle x(ClimbObj)+mousemovey())
`ClimbCamy#=wrapvalue(object angle y(ClimbObj)+mousemovex())
`ClimbCamz#=wrapvalue(camera angle z()+mousemovex())
`print "Angle Y= ", wrapvalue(camera angle y())
`print "Angle x= ", camera angle x()
`print "Angle Z= ", camera angle z()
`rotate camera 0, ClimbCamx#, ClimbCamy#
`rotate camera camangx#,camangy#, wrapvalue(camera angle z()+mousemovex())
`roll camera left wrapvalue(ClimbZ+mousemovex())
`On associe le joueur à l'object de climbing
gosub _player_resettrail
meridinglifty#=object position y(ClimbObj)+60
tmex#=camerapositionx : tmey#=camerapositiony : tmez#=camerapositionz
tdstx#=object position x(ClimbObj)-tmex#
tdstz#=object position z(ClimbObj)-tmez#
tdstt#=sqrt(abs(tdstx#*tdstx#)+abs(tdstz#*tdstz#))
position camera camerapositionx,meridinglifty#,camerapositionz
camerapositionx=camera position x()
camerapositiony=camera position y()
camerapositionz=camera position z()
gosub _ode_playerborble
if tdstt#>90
meridinglift=0
ClimbWall=0
endif
grav#=0 : gravlasty#=tmey#
else
if object exist(ClimbObj)
delete object ClimbObj
MoveVar#=0
endif
endif
Eternal suffering ...
I'm french