タイルマップエディタ
タイルマップはレベルです。あなたの画像のひとつのタイルで塗ったマスのグリッドに、コードが読むタグと、その上に置くオブジェクト(主人公のスタート位置、コイン、宝箱)があります。iPad と Mac のタイルマップエディタで開きます。
タイルマップエディタを開く
ファイルで .tilemap を選ぶと、そのままタイルマップエディタで開きます。新しく作るには ファイル › 新しいアセット… で タイルマップ を選びます(プロジェクト&アセット を参照)。
バーにはマップの名前、サイズ、タイルのサイズ、ズームが表示されます。タイル | オブジェクト で編集するレイヤーを選びます(L)。グリッド はマスの線を表示し、マップ設定 ではタイルセットのリンク、マップのサイズ変更、マスのサイズを設定します。
タイルを塗る
タイル レイヤーでは、サイドの列にタイルセットが表示されます。タイルをクリックして選ぶか、複数のタイルをドラッグしてスタンプにします。ツールはキャンバスの端に並び、それぞれにキーがあります。
- 鉛筆(B)— 選んだタイルやスタンプを塗る
- 消しゴム(E)— マスを空にする
- 塗りつぶし(G)— 同じタイルのつながったマスを塗る
- 矩形(U)— 矩形を塗る
- スポイト(I)— 下にあるタイルが塗るタイルになる
- 選択(M)— マスを選び、移動、カット、コピー、ペーストする
タグを塗る(T)はタイルの代わりに、タイルセットの下で選んだタグを塗ります。タグを表示 はマップの上にタグを表示します。コードは map.hit(…) でマスのタグを読みます。たとえば壁にはタグ 2(衝突判定 を参照)。
オブジェクトレイヤー
オブジェクト はマスに置く名前です。主人公のスタート位置、並んだコイン、宝箱など。バーで オブジェクト を選ぶと(L)配置できます。サイドの列はオブジェクトのパレットになり、プロジェクトのすべてのスプライトが最初のフレームで描かれ、その名前で並びます。オブジェクトの名前はスプライトの名前で、コードが読むのもこの名前です。
- 配置(B)— パレットで選んだスプライトをマスに置きます。ドラッグすると通ったマスごとにひとつ置きます。1マスに1つ:すでにあるマスに置くと置き換えます。
- 削除(E)— 下にあるオブジェクトを取り除きます。ドラッグすると通ったものをすべて取り除きます。
- 拾う(I)— そのオブジェクトの名前が、配置する名前になります。
- 選択(M)— オブジェクトをクリックして選択、⇧ クリックで追加、空のマスからドラッグすると矩形の中のオブジェクトを選択します。選択したオブジェクトをドラッグすると移動し、複数でも間隔は保たれます。矢印キーで選択を1マス動かします。
オブジェクトが別のオブジェクトの上に置かれることはありません。オブジェクトがあるマスへの移動は取り消され、オブジェクトは元に戻り、エディタはそのマスに何があるかを表示します。⌥ を押していると入れ替えます。削除、カット、コピー、ペースト はオブジェクトに使えます(ペーストしたグループはクリックするまでポインタについてきます)。名前を表示(N)ですべての名前を表示します。それ以外では、選択したときやポインタを重ねたときに名前が出ます。オブジェクトレイヤーでは 塗りつぶし、矩形、タグを塗る は使えません。
タイルレイヤーでは、オブジェクトは 40 % でマップに表示されたままで、クリックするとオブジェクトの下のタイルを塗り、オブジェクトには触れません。
このマップ上 は名前ごとのオブジェクトの数を示します。名前をクリックするとすべて選択します。マップを右クリックするとレイヤーのメニューが開きます。
種類
パレットの 新規種類… で、スプライトのフレームに独自の名前をつけられます。たとえばスライムのスプライトの2番目のフレームで描く guard を、slime と並べて使えます。種類はマップと一緒に保存され、パレットのスプライトの後に並びます。
ファイルでスプライトの名前を変えると、プロジェクトのマップにそのスプライトで描くオブジェクトがあれば 3 個のオブジェクトの名前も変更しますか? と聞かれます。オブジェクトの名前を変更 を選ぶと、すべてのマップのオブジェクトと、そのスプライトで描く種類の名前が変わり、1 回の取り消しで新しい名前とオブジェクトがまとめて元に戻ります。名前をそのままにする を選ぶと変わりません。スプライトが削除されたり、オブジェクトを残して名前を変えられたりしたオブジェクトは名前を保ち、同じ名前のスプライトか種類ができるまで点線で描かれます。
iPad では
タップすると指を離した場所にオブジェクトを置きます。選択 でオブジェクトをドラッグすると移動します。どのツールでも、長押しでオブジェクトを持ち上げて移動でき、動かさずに離すとメニューが出ます。オブジェクトレイヤーでは、マップの上の編集カプセルに 削除 があります。2本指はスクロールとズームで、何も置きません。
コードでは
map.things() はオブジェクトを (name, row, column) で返します。
level = world.spawn(map=GridMap(tilemap="level"))
for name, row, column in level.map.things():
if name == "coin":
place_coin(row, column) # ゲーム側の関数
形式とマップのほかの関数は GridMap を参照してください。
ペインのバーにあるコードで使用は、このマップを指すスクリプトの行を一覧にします。行を選ぶとそこへ移動します。コードでマップ名をCmd+クリックするとここに戻ります。
元に戻す/やり直し
すべての編集は 取り消す(Cmd+Z)の1ステップです。タイルのひと塗り、コインを1列置くドラッグ、複数のオブジェクトの移動も同じです。