在2D视频游戏中的大地图

时间:2010-10-29 16:36:35

标签: language-agnostic

希望不要......无聊。 在我的视频游戏开发中(2d,在Sdl.NET中),我想创建一些2d“地图”(自上而下的地图,我想也称为flybird)。 我想创建大地图,例如4000x4000像素。 显然,我想只显示用户的分辨率。 如果我的用户使用800x600,我必须显示我的大地图的“裁剪”。

解决屏幕滚动问题的最佳方法是什么? 而且,如何仅显示我的地图(地形)的正确“部分”?

3 个答案:

答案 0 :(得分:2)

在常规GUI开发中,方法是使用ViewPort。不确定您的平台细节,但ViewPort负责用户可以看到的内容,同时跟踪ViewPort适合的较大“大地图”的位置。在常规GUI编程中,您可以使用滚动条移动,但您可能需要自己管理移动它。

ViewPort的基本前提是文档比用户看到的要大得多。我猜测Sdl.NET本身没有这样的构造。 (我找不到API文档)。你可以自己创建一个,它将负责将背景的右侧部分或大地图映射到屏幕本身。 ViewPort只需几个点即可跟踪屏幕的左上角和屏幕的右下角。给自己一些方法来移动ViewPort并确保它在Big Map的边界内。

之后,这只是将它们捆绑在一起的问题。

在场景中拥有所有对象的树并不罕见,这样您就可以确保只显示应该在屏幕中的对象。这将有助于您的“绘制”功能自动地将背景和视口内的任何前景元素进行blit。

答案 1 :(得分:1)

这听起来像是使用四元图的好机会。这将允许您“切割”大地图并在运行中加载“碎片”

答案 2 :(得分:1)

我只是用谷歌搜索了一下,发现了这个,这可能是你想要的: http://cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/gfxsdl/tut6

查找DrawImgDrawScroll函数。

相关问题