2012-02-13 14 views
2

スプライトが動いているように見えるように、Javaのバックグラウンドをどのようにスクロールしますか?私はアプレットを使用しています。ゲーム内のすべてのオブジェクトを左右に動かすよりも効率的な方法がありますか?Javaスクロールバックグラウンド

答えて

6

ほとんどのゲームは、フレームごとに背景全体を再描画し、その上にすべてのスプライトを再描画します。

背景がちょうど大きなイメージの場合、これは驚くほど効率的です(メモリ - >メモリイメージのコピーは非常に高速です)。画面の左上の現在のスクロール位置を記憶し、座標(scrollX、scrollY)のペアを定義

  • :2Dのゲームのスクロールの知覚を維持するため

  • あなたがスクロールしたいときにいつでも
  • は、それぞれ(すなわちゲームの背景)ゲームの世界に相対的である座標(spriteX、spriteY)をスプライト与える(例えば選手以下)scrollXとScrollYを更新することができますし、画面の位置に対してはではありません。スクロール時にこれらの数値を変更する必要はありません。
  • 次に、スクリーン位置(-scrollX、-scrollY)に各背景を描画し、各スプライトを(spriteX-scrollX、spriteY-scrollY) 。
  • Javaが画面のクリッピングを処理する必要があります。しかし、あなたのゲームの世界と背景が大きい場合は、画面のオブジェクトを描画しようとするオーバーヘッドを避けるために、いくつかの追加のテクニックが必要になることがあります(ゲーム開発の用語では、 "俯瞰淘汰"と呼ばれるでしょう)
+0

オブジェクト?同じ方法、何度も? – Jimmt

+0

しかし、各オブジェクトにワールド/バックグラウンドに対する独自の(x、y)座標を与えます。バックグラウンドを描画した後にすべて描画します。特定のオブジェクトを他のオブジェクトの上に表示する場合は、最後に描画します(描画する前にすべてのオブジェクトを並べ替えるなど) – mikera

関連する問題