続いた
関連ページ
RGSS3 オートタイル タイルIDについてオートタイルのタイルIDの仕組みは前回触れた通り。
周囲のタイルと接続していないぼっちのタイルから
タイルIDを取得して、床や天井なら46,壁なら15を差し引くと
その種類のオートタイルの基準IDが得られる。
その後、床や天井なら48種類、壁なら16種類の中から
周囲のタイルとうまく接続できるタイルを並べればOK。
とは言いつつ、これがなかなか面倒い。
一つのタイルの周囲には8つのタイルがあり、
それぞれ中心のタイルと同じ種類か否かを判定しなければならない。
その数2の8乗で256通り!ナンテコッタイ
何かうまい方法があるのかもしれないけど
結局は力技でパワープレイしました。
力こそパワー。しかたないね。
具体的には上下左右斜めの8方向それぞれについて
同じ種類のタイルだった場合にどのタイルがあり得るかのリストを手作業で作って、
それらを組み合わせてID何番のタイルになるか洗い出すというやり方です。
例えば、床タイルにおいて上下のタイルが違う種類である場合を考えます。
"上"隣のタイルが自身と違う種類のタイルである場合とり得るタイルIDは、
[20, 21, 22, 23, 33, 34, 35, 36, 37, 42, 43, 45, 46]
のいずれかです。
同様に"下"隣のタイルが自身と違う種類のタイルである場合とり得るタイルIDは
[28, 29, 30, 31, 33, 38, 39, 40, 41, 43, 44, 45, 46]
のいずれかです。
したがって、上下のタイルが違う種類である場合、
自身のとり得るタイルIDは上記2つのリストの共通要素なので
[33, 43, 45, 46, 47]
のいずれかになります。
参考

絞込み→

これを8方向全てで行うとタイルIDは一意に定まります。
ただし、斜め方向は注意が必要。
(斜め方向は接続する場合としない場合で選択すべきIDが完全には逆ではない。
な・・・何を言っているか分からねーと思うが・・・(ry
・・・ほぼ自分のためのメモなのでいいのです・・・)
うん、まあ、なんというか、とても面倒臭かったw
壁は完璧を目指すならまた別の観点からタイルIDを求めないといけないけど
これもまた面倒臭そう。
とりあえず現状はこんな感じ。

まあ、オートタイルだけなら実用には耐えると思う。
次は、床や天井や壁以外のオートタイル(つまり柵や机)と
タイルA以外のタイル、そして影についてメモろうと思う。
続く(かな?)
↓
続いた
RGSS3 オートタイル タイルIDについて その3