Проблемы с Viewport.Project - PullRequest
       47

Проблемы с Viewport.Project

1 голос
/ 19 марта 2012

В моей игре XNA я использую Viewport.Project, чтобы получить двухмерные экранные координаты трехмерных координат солнца (в основном потому, что это выглядит красиво). Я получил эту работу, однако, когда я смотрю в противоположных направлениях солнца, я вижу 2 из них (технически, один). Я понятия не имею, что здесь происходит ..

Кто-нибудь знает, что происходит? И как я могу предотвратить это?

Чтобы помочь визуализировать это, вот изображение того, о чем я говорю: Гиперссылка, нет 10+ повторений

Это код:

        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();

1 Ответ

2 голосов
/ 19 марта 2012

Вы пробовали проверить координаты1.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);
...