2010-10-29 64 views
0

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

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

+1

这是一个公平的问题,但对于更多的曝光,您可能还想考虑[Game Dev SE](http://gamedev.stackexchange.com)。我不参加,但这似乎符合目前在Game Dev主页上的那类问题。 – Pops 2010-10-29 16:52:51

+0

我在这里的答案涵盖了同样的问题:http://stackoverflow.com/questions/3801332/data-structure-for-levels-in-games/3804276#3804276 – Martin 2010-10-29 21:14:25

回答

2

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

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

之后,它只是一个捆绑在一起的问题。

在场景中拥有所有对象树并不罕见,因此您可以确保只显示应该在屏幕中显示的对象。这将帮助您的“绘制”功能自动背景视图端口内的任何前景元素。

1

这听起来像是一个使用四分图的好机会。这将允许你“砍”大地图和负载“片”上即时