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