2.5Dゲーム用カメラ
私は5歳のように誰かにこれを説明できることを望んでいます。何時間もこれに苦労してきたし、私が間違っていることを理解できないからです。 Camera2.5Dゲームのクラスを作成しました。意図は、次のようなワールドおよびスクリーンスペースをサポートすることです。 カメラは右側の黒いものです。その画像では、+ Z軸は上向きで、-Zは下向きです。ご覧のとおり、ワールド空間と画面空間の両方の左上に(0、0)があります。 カメラが期待どおりに動作していることを証明するために、いくつかの単体テストを書き始めました。私のテストでは、ワールド、ビュー、およびスクリーンスペースで座標をプロットします。最終的には、イメージ比較を使用してそれらが正しいことを断言しますが、今のところ、テストでは結果を表示するだけです。 レンダリングロジックはCamera.ViewMatrix、ワールド空間を表示空間Camera.WorldPointToScreenに変換し、ワールド空間を画面空間に変換するために使用します。 テストの例を次に示します。 [Fact] public void foo() { var camera = new Camera(new Viewport(0, 0, 250, 100)); DrawingVisual worldRender; DrawingVisual viewRender; DrawingVisual screenRender; this.Render(camera, out worldRender, out viewRender, out screenRender, new Vector3(30, 0, 0), new Vector3(30, 40, 0)); this.ShowRenders(camera, worldRender, viewRender, screenRender); } このテストを実行すると、次のように表示されます。 ワールド空間は問題ないように見えますが、z軸は視聴者に向かうのではなく画面に入ると思われます。 ビュースペースは私を完全に困惑させます。カメラが(0、0)の上に座って、シーンの中心に向かっていることを期待していました。代わりに、z軸は間違った方向にあり、カメラは予想とは反対の角に配置されています! …