8bitビットマスキングを使用してオートタイリングを行っていて
ビットマスク処理後の計算値をタイルのインデックス番号に揃えるために変換する必要があるのですが、
2 → 1, 8 → 2, 10 → 3...
のような処理が必要です。
今のところswitch文で処理を行うことを考えているのですが、
このような変換処理に有用な方法はありますでしょうか。
追記
現状このような変換方法にしました。
効率の良い方法があれば教えていただけると嬉しいです。
var _array = [2, 8, 10, ...];
var _leng = array_length(_array);
var i = 0;
------------------
var _tile_index //ビットマスク後の計算値を収納
repeat(_leng) //配列をindex=0からリピートして該当する値を探す
{
if (_tile_index == array_get(_array,i))
{
_tile_index = i + 1;
break;
}
else i++;
}
GameMaker最新版の2023.1から指定した値を配列の中身から探してインデックスを取得するarray_get_index関数が追加されました。
もし配列の中身に重複がなければ使えると思います。
サンプルコードです。
そのような関数が追加されていたのですね!
重複もないので使えそうです。
ありがとうございます。