C# 创建滚动世界的最佳方式是什么?

C# 创建滚动世界的最佳方式是什么?,c#,xna,sprite,C#,Xna,Sprite,在这个游戏中,我试图创造,玩家将能够去所有的方向 我添加了一个图像(1024x768 2d纹理)作为背景或地形 现在,当玩家移动时,我想展示一些东西 例如,假设一盏灯,当玩家移动足够多时,他将看到一盏灯。若他回去,灯就会消失,因为它不会再出现在屏幕上了 如果我不清楚,想想马里奥。当你再往前走,硬币盒就会出现,如果你再往回走,它们就会消失。但背景将永远保持不变 我想如果我在屏幕上产生我所有的精灵,但在像15991422这样的位置它将是不可见的,因为屏幕只有1024x768,当玩家移动时,我会将那个

在这个游戏中,我试图创造,玩家将能够去所有的方向

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

现在,当玩家移动时,我想展示一些东西

例如,假设一盏灯,当玩家移动足够多时,他将看到一盏灯。若他回去,灯就会消失,因为它不会再出现在屏幕上了

如果我不清楚,想想马里奥。当你再往前走,硬币盒就会出现,如果你再往回走,它们就会消失。但背景将永远保持不变

我想如果我在屏幕上产生我所有的精灵,但在像15991422这样的位置它将是不可见的,因为屏幕只有1024x768,当玩家移动时,我会将那个精灵的位置设置为1599-11422-1,依此类推。这是一个好方法吗

有更好的方法吗?

我会研究。这是一个实际的例子

如果这是您需要的,那么这里有一个带有源代码的教程


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

  • 保持播放机和摄像机静止,移动所有其他设备
  • 除播放机和相机外,所有东西都保持静止
  • 听起来您正在尝试实现第一个选项。这是一个很好的解决方案,但随着项目数量的增加,它会很快变得复杂。如果使用平铺系统,这将更易于管理。我建议您考虑使用某种类型的平铺引擎。还有很多很棒的平铺地图编辑器

    使用互动程序的一些资源:

    • --漂亮的地图编辑器
    • --用于使用平铺贴图的XNA库

    您所描述的是一个,它描述了当前可见的“世界”的一部分

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


    最好只绘制当前可见的对象。在不知道您使用的是哪种语言或软件包的情况下,很难对其进行评论。

    完成基本滚动后,尝试实现一些截锥剔除。这就是只画在屏幕上实际可见的对象,避免不必要地画那些无论如何都看不见的东西

    我更喜欢第二种解决方案(移动播放器和摄像头)-这对我来说更容易,但可能只是个人偏好。

    根据标签,C#和XNa是一个安全的假设;)+1表示“仅绘制当前可见的对象”。绘制不可见的对象总是一个坏主意,因为渲染通常非常昂贵,即使是二维渲染也是如此