0

キャラクターが動くと動く巨大な地図として使われる大きな形をしています(キャラクターは常にステージの中央にとどまります)。

マップが巨大なので、ステージエリア内にある場合にのみ表示されるタイルにマップをカットしたいと思います。

私の質問は、マップを同じサイズの小さなタイルにカットするスマートな方法があるかどうか、または各タイルを自分で選択する必要があるかどうかです。

形状/マップはシンボルの内側にあります。そして、マップが大きすぎてアニメーション化できないということです。パフォーマンスを向上させるために、現在x=0とx=780の間およびy=0とy=400の間のタイルのみを表示したいと思います。

前もって感謝します。

4

1 に答える 1

2

優先順位#1は、画面外にあるもののグラフィックオブジェクトを作成しないことです。ゲームプレイの目的ですべてのデータとすべてを作成しますが、すべてのタイルをグラフィカルオブジェクトに関連付けないでください。特定の瞬間に画面に表示されているものを表すのに十分なグラフィカルオブジェクトのみを作成し、それらを最初に画面に表示されているものに関連付けます。次に、プレーヤーが移動したら、それらのグラフィカルオブジェクトが関連付けられているゲームプレイタイルを変更するだけです。これにより、メモリが不足したり、そのような他のことを非常に迅速に実行したりするのを防ぐことができます。

ゲームプレイマップが論理的にタイルに分割されていることを示唆しているようです。その場合、次のようなことができます。

var x:int = 0;
var y:int = 0;

for (var i:int = firstColumnInFocus; i < firstColumnInFocus + widthRange - 1; i++)
{
    for (var j:int = firstRowInFocus; j < firstRowInFocus + heightRange - 1; j++)
    {
        tileGraphics[x][y].tile = level.tiles[i][j];
        y++;
    }
    x++;
}

実際のゲームプレイデータ構造などの論理タイルを作成する限り、必要なものをすべて含むタイルまたはスペースオブジェクトの2D配列を作成し、配列内の要素の位置が地理的な位置を表していることを確認してください。

これがあなたが話していることであるかどうかは完全にはわかりません。ある意味では、タイルのコレクションとしてすでに設計されているレベルについて話しているように聞こえます。また、ある意味では、単一のスプライトを取得し、タイルを使用してどれだけの量を概算するかについて話しているように聞こえます。画面に表示されているはずです。個人的には、多かれ少なかれ両方のいずれかを実行しているように聞こえますが、戦略は実際に何が起こっているかにある程度依存するはずです。

于 2013-03-26T13:00:53.887 に答える