1

私の XNA ゲームでは、Viewport.Project を使用して、太陽の 3D 座標の 2D 画面座標を取得しています (主に見栄えが良いため)。私はこれを機能させましたが、太陽の反対方向を見ると、そのうちの 2 つ (技術的には 1 つ) が見えます。ここで何が起こっているのかわかりません..

何が起こっているか知っている人はいますか?どうすればこれを防ぐことができますか?

これを視覚化するために、私が話していることのイメージを 次に示します。

これはコードです:

        Rectangle clientBounds = Window.ClientBounds;
        Texture2D sun = Content.Load<Texture2D>(@"Image\Skybox_Sun");
        Vector3 coords = new Vector3(1000, 0, 1000);
        Vector3 coords1 = graphics.GraphicsDevice.Viewport.Project(coords, camera.Projection, camera.View, Matrix.Identity);
        suncoords = coords1;
        spriteBatch.Begin();
        spriteBatch.Draw(sun, new Vector2(coords1.X, coords1.Y), null, Color.White, 0, new Vector2(cursor.Width / 2, cursor.Height / 2), q, SpriteEffects.None, 0);
        spriteBatch.End();
4

1 に答える 1

2

coords1.Zをチェックしてみましたか?あなたの後ろの太陽は負のZに対応していると思います。その場合、次のように描画する前にif条件を追加してみてください。

if(coords1.Z > 0)
  spriteBatch.Draw(sun, new Vector2(coords1.X, coords1.Y), null, Color.White, 0, new Vector2(cursor.Width / 2, cursor.Height / 2), q, SpriteEffects.None, 0);
于 2012-03-19T02:52:23.403 に答える