0

如何制作可滚动的地图。例如,我首选的后台缓冲区是 800x600,而地图是 2400x1800(大约 3x3)。另外,我如何处理键盘状态以滚动和行走。我知道大多数游戏都以玩家为中心并滚动世界。这种方法的问题是角落。会有很大的不可移动区域。

4

1 回答 1

1

要制作可滚动地图,您可以使用简单的 Rectangle 或 ViewPort(命名相机):

' Initialize camera with size of game viewport
Dim viewport As Viewport = spriteBatch.GraphicsDevice.Viewport
Dim camera As New Rectangle(viewport.X, viewport.Y, viewport.Width, viewport.Height)

' Draw method code
spriteBatch.Begin()
spriteBatch.Draw(image, 
    New Rectangle(0, 0, viewport.Width, viewport.Height),   // Destination rectangle
    camera,                                                 // Source rectangle
    Color.White)
spriteBatch.End()

通过更改 camera.X 和 camera.Y 值,您可以调整绘制图像的原点,从而移动相机。例如,以下代码会将您的相机向右移动:

Dim keyboardState As KeyboardState = Keyboard.GetState()

If keyboardState.IsKeyDown(Keys.Right) Then
    camera.X += 1
End If

步行可以非常相似地完成,通过在按下相应按钮时增加字符位置 X 和 Y 坐标。

将玩家保持在屏幕中央有点棘手。基本上,您希望始终将角色保持在屏幕的中心,除非它与世界边缘之间的距离小于屏幕的一半。在这种情况下,停止移动相机并开始将角色从中心移动到所需的一侧。

于 2012-06-03T18:31:09.603 回答