まず説明からなんですが…
下の画像
青い部分が配置したマップタイルで、斜めのグリッドは遠景です。
マップ上で、赤の線上を移動するキャラクターを、緑の線上に表示したくて
以下のプラグインを作りました。
コード: 全て選択
本質は screenX, screenY がそれぞれ、scrolledX() と scrolledY() 両方の関数になっていることで、他は相談ごとには関係ないはずです。
1画面に収まるマップであれば、これで事足りています。
が、1画面サイズを超えるマップを作って、スクロールすると問題が…
マップ座標 (x, y) = (0, 0) から (0, 8) へ、つまりマップの下方向へ移動すると
あたりまえですが下にスクロールします。
が、キャラクターは斜めに移動するのでスクロールの方向と合わなくておかしなことになります。
これをなんとかしたい。
スクロールも、キャラクターと同様に X, Y 両方の関数になるようにして方向を合わせたいです。
scrollDown() と scrollRight() を一緒に実行するようにしてみたりしたのですが
そもそも表示系が scrolledX(), scrolledY() の関数になってるので全然ダメでした。
端から筋の悪い手法なのかもという気がしなくもないですが
どうにかなりそうなら、お知恵を貸していただきたく…
あまりに大事になりそうだったらスクロール諦めるしかないかと思ってるんですが
絶対に1画面に収めないと、っていう制約があるとマップ作りのネタがきつくて…
補足
$gameMap._ofstX と $gameMap._ofstY は 独自に追加したプロパティです。
マップのメモ欄から読み取るようにしていて、添付画像の場合 <ofst: 3, 9> が設定されてますが、関係ないはず。
(赤〇 から緑〇 への座標変換のためのオフセットです)
リージョンIDが絡んでるのも、高さの疑似表現のためで、これも無関係。