如何制作可滚动的地图。例如,我首选的后台缓冲区是800x600,地图是2400x1800(大约3x3)。另外,如何处理键盘状态以滚动和行走。我知道大多数游戏让玩家居中并滚动世界。这种方法的问题在于角落。将会有一个不可移动的大区域。
答案 0 :(得分: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坐标,可以非常类似地完成步行。
将玩家置于屏幕中央有点棘手。基本上你想要将角色始终保持在屏幕的中心,除非它与世界边缘之间的距离小于屏幕的一半。在这种情况下,请停止移动相机并开始将角色从中心移动到所需的一侧。