【问题标题】:Best way to create a 2D scrolling map创建 2D 滚动地图的最佳方法
【发布时间】:2014-09-06 02:14:01
【问题描述】:

我正在用 Visual Basic 2010 编写一个程序来创建一个 2D 滚动地图。我目前正在使用图片框,大小均为 50 x 70。它从 1 开始,根据需要可能很容易以 1000 - 2000 结束。它们都需要可点击。我担心它可能会使用太多资源并且运行速度太慢。谁能告诉我制作类似东西的最佳方法是什么。

谢谢。

【问题讨论】:

    标签: visual-studio-2010 picturebox


    【解决方案1】:

    一种常见的方法是仅在玩家的相机可以看到瓷砖(或您的情况下的图片框)时才绘制它们。因此,您应该首先确定有多少框填充屏幕,然后计算它们是否在玩家相机的边界内,如矩形表示的那样。此外,您应该在玩家视野之外稍稍画出框(每条边增加 1 或 2 个框,这将在下面解释)。

    当玩家移动时,移动世界的位置,而不是玩家。因此,如果玩家向左移动,则在玩家精灵保持静止时向右滚动所有图块。现在,当玩家的位置发生变化时,您应该再次检查玩家屏幕中可以看到哪些图块。由于您正在稍微超出播放器视图的位置绘制额外的行,因此边缘将平滑地向内滚动,并且不会像开始时的常见问题那样“弹出”。

    由于您只绘制玩家可见的图块,因此您的游戏应该会更高效地运行。现在可以将此数据存储在内存中的二维数组中。将来,当您拥有巨大的地图时,最好将地图中远离玩家视野的部分从磁盘加载到内存中。您不想在完全加载之前从磁盘加载玩家可以导航到的地图数据。

    究竟要在内存中存储多少地图数据取决于您,并且取决于您要在什么平台上发布以及其他限制。

    此外,您可能需要查看不同的渲染库。常见的低级库是 DirectX 和 OpenGL。这些库直接与您的显卡一起使用,以显着加快渲染速度。在这些库之上构建了各种语言的库,但我不知道任何用于 Visual Basic 的库。 JavaScript 的一个例子是 PixiJS。此外,还有功能齐全的游戏创建库,例如 Unity 或 Unreal Engine 3。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2021-01-24
      • 1970-01-01
      相关资源
      最近更新 更多