0

私は最近ゲームプログラミングを探していて、タイルマップと呼ばれる定義を投げて渡しました。それを調べて、それがどのように宣言され、どのように衝突を見つけるために使用されているかを理解しようとしましたが、成功しなかったので、誰も私に明確な説明を与えることができませんはタイル マップであり、宣言されています。このマップで衝突を検出するにはどうすればよいですか。これは私が読んだ Web サイトです。

http://rodrigo-silveira.com/html5-2d-game-programming-tutorial-gwt/#.Uf9Ivm22shC

var mapBluePrint = [
  [0, 0, 0, 0, 0, 0],
  [0, 8, 8, 8, 8, 0],
  [0, 0, 0, 0, 0, 0]
  ];
4

2 に答える 2

1

ウィキペディアでは、タイル マップ (タイル セットとも呼ばれます) を次のように定義しています。

タイル セット (スプライト シートと呼ばれることもあります) は、1 つの大きな画像に結合された、タイルと呼ばれる小さな画像 (通常は均一なサイズ) の集まりです。タイル セットは、セット内の再利用可能なタイルから複雑なマップを作成するために、2D ビデオ ゲームでよく使用されます。タイル セット ベースのマップが表示されると、その中に格納されているタイルを使用して、表示用にマップが再構築されます。

タイル マップは、ゲームを正方形のグリッドに分割することによって作成されます。各セルは、小さくて均一な画像 (記事で提供されているマリオの画像など) で構成される画像の「​​タイル」で満たすことができます。その後、2D 配列 (場合によっては 1 つの配列) を使用して数字のリストを格納します。各数字は画像の特定のタイルに対応します。配列を使用すると、セルの行と列を追跡できるので便利です。あなたの例の場合、数字 0 は通常空のタイルに対応します (主に衝突のチェックを容易にするため)、数字 8 は大きな画像の一部、おそらく雲やレンガに対応します。

タイル ベースのゲームを作成する場合、通常、マップのタイル情報を保持する 1 つ以上の配列と、衝突が発生する場所に関する情報を保持する別の配列を作成します。衝突をチェックするときは、数値の存在をチェックして、ユーザーが入力しようとしているセルが空であることをチェックするだけです。そのような:

function checkCollision(userRow, userCol) {
   if (collisionMap[userRow][userCol]) {
      // cell is not empty, handle collision
   }
   else {
      // cell is empty, carry on
   }
}

タイル マップに関する別のリソースについては、私が書いたこの記事を参照してください。

于 2013-08-05T07:23:16.607 に答える
0

Tiled は、汎用のタイル マップ エディターです。マップ レイアウトを簡単に作成できる無料のツールとして機能します。コリジョン エリア、敵のスポーン位置、パワーアップ位置など、より抽象的なものを指定できるほど汎用性があります。このデータはすべて便利な標準化された tmx 形式で保存されます。

Tiled を使用してマップを作成する設計プロセスの核心は、次の手順に従って機能します。 マップ サイズとベース タイル サイズを選択します。画像からタイルセットを追加します。マップ上にタイルセットを配置します。抽象的なものを表すオブジェクトを追加します。マップを tmx ファイルとして保存します。tmx ファイルをインポートして、ゲーム用に解釈します。

于 2013-08-05T07:15:30.220 に答える