0

actionscript/flex 3 (フラッシュ) で宇宙ゲームを作成しています。地図がないので、世界は無限大です。これを機能させるには、オープン スペースのように見える背景を動的に (プログラムで) レンダリングする必要があります。

世界をリアルに感じさせ、特定の場所を他の場所とは異なるように見せるには、色の違いや霧のような変換などのフィルターを追加できる必要があります。これらはランダムに追加および変更されます。

プレーヤーは、画面の端に飛んで「マップ」を「スクロール」できるため、世界の特定の部分のみが一度に表示されますが、プレーヤーはどこにでも行くことができます。スクロールは、プレーヤーを除くすべてのオブジェクトを反対方向に移動することで機能し、プレーヤーがその方向に移動したように見えます。背景も移動する必要がありますが、新しく発見された地形 (動的に作成されたもの) では異なる必要があります。

さて、私の質問は、このようなことをどのように行うか、どのようなものを使用する必要があり、それらをどのように実装するかです。ゲームにはさらに多くのオブジェクトが登場するため、パフォーマンスも考慮する必要があります。

4

1 に答える 1

1

可視領域内にあるオブジェクトのビューのみを持つ必要があります。そのために四分木を使用することをお勧めします。

背景は多分、多かれ少なかれランダムに繰り返すことができる一連のタイルで構成されている必要があります (実際、背景が本当に必要ですか? いくつかの粒子があれば十分ではありませんか?)。ここでオブジェクトに使用したのと同じテクニックを使用します。

最終的には、オブジェクトとタイルまたはパーティクルのモデル (最初に生成するもの) ができあがります。このようにして、いくつかのフロートを追加するだけです (遠くにあるオブジェクトの位置を計算しない場合、追加のパフォーマンスを達成できます。四分木はそれを助けるはずですが、これは必要ではないと思います)ビューを持つオブジェクトがステージを離れる場合は、ビューを解放し、クアッド ツリーを使用して新しいオブジェクトが表示されるかどうかを確認します。

多数のオブジェクト/パーティクルを使用する場合は、オブジェクト プールの使用を検討してください。オブジェクトが移動するだけで、回転/スケーリングされていない場合は、 の使用を検討してDisplayObject::cacheAsBitmapください。

于 2009-07-20T14:02:55.720 に答える