C ++とDirectX9は初めてなので、サードパーソンカメラを実装したいと思います。Quaternionベースのカメラについて読んだ後、私はそれを実装してみることにしました。しかし、それは本当に私の心を吹き飛ばすので、TPカメラを実装する最も簡単な方法は何ですか?
カメラがすべきことは次のとおりです。
3DVector(x、y、z)に保存されている座標を追跡する
オブジェクトを中心に回転(スムーズ)
たぶんいくつかのタイプの「スプリング」=回転後、オブジェクトの後ろの通常の位置にゆっくりと戻ります
私の悪い英語をお詫び申し上げます:私はドイツ人で、まだ学校にいます!
前もって感謝します!
編集:
いくつか試した後、私はそれを手に入れました。
私が検討した最大の問題は、ワールドマトリックスから「方向」ベクトルを正しく抽出することでした。
私の研究中に、私はほとんどこのようなものを見つけました:
D3DXVECTOR3 direction;
direction.x = worldMatrix->_13;
direction.y = worldMatrix->_23;
direction.z = worldMatrix->_33;
D3DXVec3Normalize(&direction, &direction);
それは私にはうまくいきません!代わりに私はこれをしました:
D3DXVECTOR3 direction;
direction.x = worldMatrix->_13;
// Consider the .y after the .z!
direction.z = worldMatrix->_23;
direction.y = worldMatrix->_33;
D3DXVec3Normalize(&direction, &direction);
スケーリングの場合:
// The tenfold of the average distance
D3DXVec3Scale(&direction, &direction, 10.0f);
位置の設定:
cameraPos = targetPos - direction;
// For a top-view
cameraPos.y = targetPos.y + 5;
回転の場合は、(ターゲットの位置から)一時的なワールドマトリックスを作成し、希望どおりに回転させて方向を抽出する必要があります。
ローテーションのスムージングは実際にゲームに依存します!
この種の3人称カメラは非常に簡単に作成できます。
正解をくれた「ジェリコ」さん、本当にありがとうございました!