什么是创建滚动WORLD的最佳方法?

时间:2011-07-25 17:22:54

标签: c# xna sprite

在我试图创造的游戏中,玩家将能够向各个方向前进

我添加了一个单独的图像(1024x768 2d纹理)作为背景或地形。

现在,当玩家四处走动时,我想展示一些东西。

例如,让我们说一盏灯,当玩家移动足够时,他会看到灯。如果他回去,灯会消失,因为它不再是屏幕了

如果我不清楚,请考虑马里奥。当你走得更远时,会出现投币箱,如果你回去,它们就会消失。但背景总是保持不变

我想如果我在屏幕上产生我的所有精灵,但在1599,1422这样的位置它将是不可见的,因为屏幕只有1024x768,当玩家移动时,我会将该精灵的位置设置为1599-1,1422- 1等。这是一个很好的方法吗?

有更好的方法吗?

4 个答案:

答案 0 :(得分:2)

有两种方法可以达到这个效果。

  1. 让玩家和相机保持静止,移动其他所有内容。
  2. 除播放器和相机外,保持一切静止。
  3. 听起来您正在尝试实施第一个选项。这是一个很好的解决方案,但随着项目数量的增加,它会变得很复杂。如果您使用磁贴系统,则可以更轻松地管理。我建议你研究一下使用某种瓦片引擎。还有很多很棒的瓷砖地图编辑器。

    使用Tiles的一些资源:

    • Tiled - Nice Map Editor
    • TiledLib - XNA图书馆使用平铺地图

答案 1 :(得分:2)

你所描述的是Viewport,它描述了当前可见的“世界”的一部分。

您需要以某种方式定义“世界”的内容。这可以通过诸如场景图之类的数据结构来完成,但是对于您正在描述的简单2D环境,您可以将对象存储在数组中。您需要绑定方向键以更改视口的坐标(如果您希望它们保持居中,则需要更改您的角色)。

仅绘制当前可见的对象是个好主意。如果不知道您正在使用哪种语言或软件包,就很难对此进行评论。

答案 2 :(得分:0)

我会调查Parallax scrollingHere就是它的一个例子。

如果这是您所需要的,那么这是一个包含源代码的教程。

XNA Parallax Scrolling

答案 3 :(得分:0)

完成基本滚动后,尝试实施一些视锥体剔除。这只是在屏幕上实际可见的绘制对象,并避免不必要的绘制无论如何都看不到的东西。

我更喜欢第2号解决方案(移动播放器和相机) - 这对我来说会更容易,但也许只是个人偏好。