【问题标题】:2D XNA-Camera and fixed Background2D XNA-相机和固定背景
【发布时间】:2012-09-07 11:43:16
【问题描述】:

我目前正在为 Windows Phone 创建一个 XNA-Game。我有关于 2D 相机和背景的问题。

是否可以移动 XNA-Camera 并修复背景,使其不随相机视图移动?此外,我的暂停按钮和菜单栏也在移动,希望可以将它们固定到屏幕顶部。

更新: 这是我在相机类中的 move-Methode:

    public void Move(Vector2 amount)
    {
        _pos += amount;
    }

截图:http://www.abload.de/img/screenshotbdllj.png

正如您在图片中看到的那样,盒子对象自上而下地下降,而背景则向上移动。有没有办法让背景保持固定不变?

【问题讨论】:

  • 2D 还是 3D?你能展示一些相关的相机代码,或者截图吗?请记住,XNA 本身没有内置“摄像头”——因此您必须告诉我们您在做什么。
  • 2D,我刚刚用截图更新了我的问题!谢谢
  • 信息不足。在 DrawCall 中,您可以只考虑相机,也可以不考虑。它应该相当简单。请记住,从数学的角度来看,无论是相机移动还是物体向相反方向移动都无关紧要。只需将每帧反转的相机位置应用于您的对象。对于 UI 元素,根本不应用相机位置。
  • 感谢您的评论。您是否有一个示例说明如何不应用相机位置?还有一个问题是可以在 XNA 中创建一些层吗?我认为这会更简单,如果可以创建一个固定的图层,那不会移动。

标签: c# windows-phone-7 xna camera


【解决方案1】:

如果您在 2D 空间中工作,您可能会遇到这样的情况:

spriteBatch.Begin(SomeSortmode,nullnull,etc..., Matrix);
//drawstuff
spriteBatch.End();

如果是这种情况,请将您的渲染代码移至另一个 Begin() 和 End()

我想到了这样的事情:

spriteBatch.Begin(SomeSortmode,nullnull,etc..., Matrix);
//draw stuff affected by the camera
spriteBatch.End();

spriteBatch.Begin()
//draw stuff which should not be affected by the camera
spriteBatch.End();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多