モンスターハンターやラチェット&クランクをプレイしたことが無いので
どのようなものを想定されているかわかりませんが、とりあえず計算で求める
カメラの座標に遅れて付いていくような仕組みを作ると滑らかな動きになります
簡単な例で、3Dアクションサンプルに以下のような変更を施すと効果が分かります
まず struct CAMERA に以下のメンバー変数を追加します
VECTOR SetEye ;
VECTOR SetTarget ;
次に関数 Camera_Process の最後の行の
// カメラの情報をライブラリのカメラに反映させる
SetCameraPositionAndTarget_UpVecY( cam.Eye, cam.Target ) ;
この部分を以下のように変更します
// カメラの情報をライブラリのカメラに反映させる
cam.SetEye = VAdd( cam.SetEye, VScale( VSub( cam.Eye, cam.SetEye ), 0.2f ) ) ;
cam.SetTarget = VAdd( cam.SetTarget, VScale( VSub( cam.Target, cam.SetTarget ), 0.2f ) ) ;
SetCameraPositionAndTarget_UpVecY( cam.SetEye, cam.SetTarget ) ;
『毎フレーム「計算で求めたカメラの座標」( 以降座標A )に、「SetCameraPositionANdTarget_UpVecY に渡すカメラの座標」( 以降座標B )を20%近づける』
という処理をしています( 尚、0.2f と書かれている箇所が『20%近づける』の部分なので、値を大きくすればそれだけ動きが硬くなり、
値を小さくすると更に動きが鈍くなります )
因みに、壁にカメラがめり込むのを防ぐためにカメラが壁に当たった場合は即座に座標Bの座標を座標Aにしたり、
キャラクターが別ステージに移動するなどして座標がワープする場合も即座に座標Bの座標を座標Aにしたりと、
この『滑らかな動きにする処理』を実装する場合はしない場合よりやらなければならないことが増えます