首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Viewport.Project问题

Viewport.Project问题
EN

Stack Overflow用户
提问于 2012-03-19 10:17:41
回答 1查看 1.2K关注 0票数 1

在我的XNA游戏中,我使用Viewport.Project来获取太阳3D坐标的2d屏幕坐标(主要是因为它看起来很棒)。然而,当我在太阳的相反方向上看时,我看到了其中的两个(严格来说,一个)。我不知道这里发生了什么..。

有人知道是怎么回事吗?我怎样才能防止这种情况呢?

为了帮助可视化这一点,这里有一个我正在讨论的图像:Hyperlinked image, don't have 10+ rep

代码如下:

代码语言:javascript
复制
        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();
EN

回答 1

Stack Overflow用户

发布于 2012-03-19 10:52:23

你有没有试过检查coords1.Z?我假设你背后的太阳对应于负Z,在这种情况下,你可以尝试在绘制之前添加一个if条件,如下所示:

代码语言:javascript
复制
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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9764203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档