Xna可滚动视图

时间:2012-06-01 00:09:39

标签: vb.net xna

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

1 个答案:

答案 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坐标,可以非常类似地完成步行。

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