1

XNAで小さなゲームを作っています。y 軸上で 20 ピクセル上空にカメラがあります。その下に、100x100 のタイルのグリッドがあります。今私がやろうとしているのは、グリッドの X 軸と Z 軸に沿ってマウスで 3D オブジェクトを移動させることです。viewport.unproject を使用して 2D 画面座標を 3D 画面座標に変換していますが、何を試してもうまくいかないようです。現時点で私はこれを持っています:

Vector3 V1 = graphicsDevice.Viewport.Unproject(new Vector3(mouse.X, mouse.Y, 0f), camera.Projection, camera.View, camera.World);

これを使えば動きますが、微々たるものです。Z 軸を 1 に置き換えてみましたが、大幅に移動します (理由は理解していますが、修正方法がよくわかりません)。

Z が 0 の 1 つと Z が 1 の 1 つの 2 つのベクトルを持ち、それらを減算/正規化するなど、他のさまざまな方法を試しましたが、それもそうではありませんでした。

私が得た最も近いものは結果にズームした量を掛けることでしたが、それは完璧ではなく、わずかにオフセットされ、画面をスクロールするたびに狂ってしまうので、それも間違ったアプローチであると考えました.

どんな助けでも大歓迎です、ありがとう。

4

0 に答える 0