クォータービューサンプルです。
しかし、このサンプルはTaddiがメモリーキューブを製作した際の
スクリプトをもとにしており、
Taddiの試行錯誤で「とりあえずクォータービューで動くぞ」
という状態のものを公開してきました。
公開から時間もたっており、
なおかつ今見ると汎用性は乏しく、実用に耐えない作りで
とてもサンプルという名前を付けておくのはおこがましい
出来映えでしたので、完全リメイクすることにしました。
サンプルは公開作品からダウンロードしてください。
サンプルの中身を簡単に説明すると
MapToQua_*と
QuaToMAP_*という自作関数がポイントになります。
MapToQua_*関数は、
二次元のmap(x,y)を、クォータービューでチップを配置するための座標に変換します。
この関数で座標を求めることで、マップを描画できます。
注意しなければならない点は、
この変換は、座標を45度傾けるだけで、
描画順序までは変換されないということです。
Y座標は影響ないけれど、
X座標は逆順に描画しなければならないので、
描画処理のループ内で「xr=6-cnt」と逆さまになるように処理しています。
一方、QuaToMAP_*関数は、
クォータービュー上のある点をマップ座標に変換します。
マウスを動かすとその意味がわかると思います。
この関数は、マップ上のキャラクターの描画順序の決定に使用します。
注意しなければならない点は、
左上座標で判定するということです。
HSPではgcopyなどの標準描画命令は、左上が起点のため、このようになります。
今回はキャラクターの移動途中で、描画順序が変わるので
ppxに+24、ppyに+60することで、判定がずれないようにしています。
今回のサンプルは、改良次第で複数のキャラクターが歩き回るマップや、
高低差のあるマップを移動するなど応用できます。
ただし、いずれもかなりの部分で経験則に基づいて制作しているので
バグが存在する可能性もあります。
より、効率的で汎用性のあるスクリプトに改善できる
アイデアなどございましたら、ぜひコメントください。
タグ:クォータービュー