2012-06-01 2 views
0

Как создать карту с прокруткой. Например, мой предпочтительный задний буфер - 800x600, а карта - 2400x1800 (приблизительно 3x3). Кроме того, как мне обрабатывать состояние клавиатуры, чтобы прокручивать и делать ходьбу. Я знаю, что большинство игр удерживают игрока в центре и прокручивают мир. Проблема с этим подходом - это углы. Будет большая свободная область.Xna scroll-able view

ответ

1

Для того, чтобы прокручивать карту, которую вы можете использовать простой прямоугольник или 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 координаты, когда по нажатии кнопок.

Удержание игрока в центре экрана немного сложнее. В основном вы хотите сохранить характер в центре экрана во все времена, за исключением случаев, когда расстояние между ним и краем мира меньше половины экрана. В этом случае перестаньте перемещать камеру и начните перемещать символ от центра к желаемой стороне.