ページ 11

指定マップIDの指定座標にあるリージョンIDを取得したい

Posted: 2020年4月12日(日) 19:47
by ドラムカン
いつもお世話になります。

指定のマップIDの指定座標のリージョンIDを取得して、
条件分岐のスクリプトに入れ込みたいと思っております。

現在いるマップであれば、$gameMap.regionId(x座標, y座標)で取得できるのですが
ここに任意のマップIDを指定する方法が分かりません。

どうかご教示のほど、よろしくお願いいたします。

Re: 指定マップIDの指定座標にあるリージョンIDを取得したい

Posted: 2020年4月12日(日) 20:52
by Plasma Dark
現在いるマップであれば、$gameMap.regionId(x座標, y座標)で取得できるのですが
ここに任意のマップIDを指定する方法が分かりません。
実はRPGツクールMVはマップ移動のたびに、対象マップのデータをロードしており、メモリ上に展開しているマップデータは今いるマップのもののみになっています。

マップデータをロードしてしまうのも手ではありますが、判定のためだけにやろうとするにはちょっと考えることが多い実装になります。
マップデータのロード処理は DataManager.loadMapData 関数に書かれていますが、これは現在マップ用のデータをロードする処理であり、指定マップ用の変数に対してロードする処理を新たに書く必要があります。
しかも、非同期処理なのでちゃんとロード完了を待つことも考慮して書かなければなりません。判定したい時になってロードを始めていたら判定が終わるまでゲームを止める必要があります。

かと言ってゲーム開始時に全マップデータを読み込むのは、それはそれで相当に時間がかかることが予想されるので、判定処理を行うマップに入ったタイミングで判定処理に必要なマップのデータだけロードする、みたいな工夫が必要になりそうです。

Re: 指定マップIDの指定座標にあるリージョンIDを取得したい

Posted: 2020年4月12日(日) 22:06
by ドラムカン
Plasma Dark様

いつもお世話になります。

早急にお答えくださり、ありがとうございます。
やはりそうでしたか。
薄々ですが、そうではないかと感じておりました。

場所移動で遷移先マップの任意座標のリージョンIDが
移動前に分かればと思ったのですが、
ロードのタイミングがマップ遷移時のみということであれば
どうしようもないことですね。

いつもご丁寧にお答えくださり、感謝申し上げます。
別のアプローチで何とか解決してみます。