スクロール可能なマップを作成するにはどうすればよいですか。たとえば、私の好みのバック バッファは 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 に答える