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 に答える