tile_asset_builder は、1枚のシート画像やフレーム列から**1つのタイル素材(TileAsset)**を
組み立てるノードです。静的タイル・アニメーション・複数セルスタンプ・オート/ルールタイルを
同じ素材の中に共存させられます。ノードをダブルクリックすると専用エディタが開きます。
入力ピン
| ピン | 型 | 用途 |
|---|---|---|
image |
Image | 分割するシート画像(余白・間隔をエディタで指定) |
sprite_sheet |
SpriteSheet | 既存シート。列数・セルサイズが分割レシピの初期値になる |
images |
List | アニメーションのフレーム列(list_create でまとめる) |
rule_tile_asset |
RuleTileAsset | autotile_from_template / rule_set_preset 等で作ったオート/ルールタイル |
base_asset |
TileAsset | 既存素材を土台にして編集・追加する |
1. シートを一括分割する(静的タイル)
image(またはsprite_sheet)にシートを接続する- エディタの「シートと分割」でセル幅・高さ・開始位置・余白・間隔を設定する。 グリッド線付きのプレビューで切り出し位置を確認できる
- 「シートを一括登録する」をオンにすると全セル(またはチェックを外して選択セルのみ)が 静的タイルとして登録される。1セルずつ配線する必要はない
- 「透明セルの扱い」で、完全透明のセルを除外できる(シートの空きマス対策)
登録された各セルは brush_<プレフィックス>_<番号> というIDのブラシになります。
ブラシIDはパレットやマップから参照される安定IDなので、後から変えないのが安全です。
2. アニメーションを付ける
2通りの作り方があります。
- 選択セルから: シート上のセルを順に選択し「選択セルから追加」。コマ送りアニメになる
- images入力から:
list_create(要素の型: Image)でフレーム列を作ってimagesに接続し、 「images入力から追加」。フレームは素材のセルサイズと同寸法である必要がある
「対象ブラシID」に既存の静的ブラシのIDを入れると、パレット上の位置を保ったまま
その見た目だけがアニメーションに置き換わります(差し替え運用)。空欄なら
brush_anim_<アニメID> という新しいブラシが増えます。
フレーム時間(ms)・ループの有無も指定できます。再生位相は既定で全セル同期
(global)です。
3. 複数セルのスタンプを作る
2×2の家のような複数セル素材は、シート上でセルを複数選択して 「選択セルからスタンプ作成」を押すと1つのスタンプブラシになります。 マップでは1クリックで全セルがまとめて配置されます。構成セル単体のブラシは 自動的に非公開(internal)になり、パレットを散らかしません。
4. オート/ルールタイルを取り込む
rule_tile_asset 入力にオート/ルールタイル素材を接続し、素材情報の
「接続中のルールタイル素材を取り込む」をオンにすると、ルールブラシとして統合されます。
マップでこのブラシを塗ると、隣接関係に応じてタイルが自動選択されます
(描き方は マップを描く を参照)。
取り込みIDは内容から決定的に導出されるため、同じ素材を何度取り込んでも 参照が壊れることはありません。
5. 保存する — tile_asset_save
tile_asset 出力を tile_asset_save に接続し、保存先(.pxntile)と保存モードを
設定します。保存された .pxntile は画像を内包した自己完結ファイルで、
元の入力ノードやプロジェクトを消しても読み込めます(読み込みは tile_asset_load)。
ライブラリ(user_data/library/user/tiles/ 以下)に保存すると、
パレットエディタの素材一覧に表示されます(→ ライブラリとパック)。
よくある失敗
- アニメフレームの寸法違い:
imagesのフレームはセルサイズと同寸法のみ。違うとエラーになる - セルサイズの変更: ブラシ登録後にセルサイズを変えると参照側(パレット・マップ)と 合わなくなる。セルサイズは最初に決める
- プレフィックス変更: 一括登録のプレフィックスを後から変えるとブラシIDが変わり、 既存パレット・マップの参照が欠損になる
動くサンプル
docs/ai/samples/tile_studio_demo.ppl(配布物では ai/samples/)に、
草シート分割+水アニメ+小屋スタンプ+道路オートタイル統合の完全な例があります。