0

タイルマップ全体をループせずに、選択したタイルの次の下部要素 (id、クラス) を取得するにはどうすればよいですか? 例: 私のタイル $('.gQ_tileType_4') はゲーム内の岩であり、次の一番下のタイル $('.gQ_tileType_8') がスペースである場合、これは落下するはずです。次に、タイルマップ全体をループして、要素を xy 座標と比較します。しかし、ゲームのパフォーマンスが低下しているため、間違った方法だと思います。

4

1 に答える 1

1

gameQuery は、次の方法で構築された各タイルに一意の ID を与えます。

$.gameQuery.tileIdPrefix+name+"_"+row+"_"+column

これは、タイルマップが「foo」と呼ばれる場合、次のように記述して位置 (a,b) のタイルにアクセスできることを意味します。

$("#"+$.gameQuery.tileIdPrefi+"foo_"+a+"_"+b);

同様に、ID を解析することで、タイルの位置 (インデックス単位) を推測できます。これは、特定のタイルの位置を見つけて、そのタイルの状態を具体的に調べることができることを意味します。

タイルマップを使用することがこれに対する最良の解決策であるかどうかはわかりませんが、変更することは想定されていないためです。現時点では問題は発生しないはずですが、将来のバージョンで衝突検出などの一部の機能が壊れないことを保証することはできません。

この状況では、単純にスプライトを使用して要素を表示します。ゲームのゲーム ロジックの実装を高速化するには、単純にタイルの状態を 2 次元配列に格納し、関連するスプライトへの参照を格納します。

このようにして、必要に応じて配列を操作し、関連するスプライトを更新するだけです。

于 2013-07-28T07:51:55.330 に答える