学習目的でやろうとしている単純なゲームがありますが、特にDirectXでは、行列は少し難しいです。
私は現在、画面にタイルをレンダリングし、中央に文字の位置をレンダリングするタイルシステムを持っています(起動時)
プレイヤーが左に移動すると、地面が右に移動して、常に画面の中央にくるようにする必要があります。スプライトを使用してタイルとプレーヤーを変換しますが、地面が動いていて、プレーヤーが中央に位置している地面に静止しているため、問題が発生します。
これはトップダウンの2Dゲームなので、位置(およびおそらく回転)を変換するだけで済みます
私のCameraクラスには次のメソッドがあります。
D3DXMatrixTransformation2D(&View, NULL, 0, &Scale, &Center, D3DXToRadian(Rotation), &Position);
私も試しました(カメラ用):
D3DXMatrixTranslation(&View, Position.x, Position.y, 0);
次に、グラウンドスプライトをレンダリングするときに、カメラに変換するように設定しましたが、プレーヤーには、移動時に使用する独自のマトリックスがあります。
上記のものとまったく同じですが、彼の位置、回転などがあります...
何が欠けていて、何が必要ですか?
私は画面の幅/高さに合うタイルシステムしか持っていないので、彼が動いているときに見る必要がありますが、彼は中央と地面に静止していて、プレーヤーは動いています。
地面が反対方向に動くようにマトリックスを反転する必要がありますか?
プレイヤーだけがここに移動し、世界は彼の周りを変化します。
ゲームプログラミングでナンバーワンの言語であるため、「2Dのトップダウンカメラ」のような簡単なことを説明するガイドはほとんどありません...