【解決済み】マップを分割しての自動移動のやり方を模索しています

アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

【解決済み】マップを分割しての自動移動のやり方を模索しています

投稿記事by にゃたま » 2017年9月02日(土) 00:16

こんばんは。マップについてお聞きしたいことがあります。

ワールドマップが256マス✕192マスと大きいマップを作ったので
処理速度的にまずいと思いまして128マス✕96マスが4つのマップに分割しました。
そうすると必然的にマップの隅まで行ったら相方のマップに移動させるために
移動イベントを沢山つくらなくてはならなくなるのですがこれが相方のマップの
マスに自動的に移動できるようにはならないでしょうか?

例えば左上のマップから右上のマップに移動する時、
128マス✕96マスの左上マップA x:128 y:50なら右上マップB x:1 y:50に
左上マップA x32 y:96からは左下マップC x:32 y:1に自動的に移動してほしいです。

このような処理をプラグインに任せて自動的に移動を行うことなどできる
プラグインはありませんでしょうか?ご回答頂けましたら幸いです。
最後に編集したユーザー にゃたま on 2017年9月22日(金) 17:46 [ 編集 3 回目 ]

アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: マップを分割しての自動移動のやり方を模索しています

投稿記事by まっつUP » 2017年9月02日(土) 11:16

にゃたま様
お世話になります。

移動先のマップIDの特定方法はありますでしょうか。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: マップを分割しての自動移動のやり方を模索しています

投稿記事by にゃたま » 2017年9月02日(土) 18:00

こんにちは。お世話になります。

まっつUP さんが書きました:にゃたま様
お世話になります。

移動先のマップIDの特定方法はありますでしょうか。


ご連絡ありがとうございます。
まずマップの仕様から申し上げますとID32からID79までがワールドマップになっており
マップ枚数は横8、縦6の計42枚となります。(仕様が変わって更に分割されました)
ID32が最も左上になり右に進むに連れ33、34と列が増えID39までいったら行がかわり下に折り返します。
変数「現在Map 列」に現在居るマップの列
変数「現在Map 行」に現在居るマップの行
変数「現在Map ID」に現在居るマップのID
変数「現在Map X座標」に現在居るマップのX座標の値
変数「現在Map Y座標」に現在居るマップのY座標の値
がそれぞれ代入されています。
以上のような感じで回答になりましたでしょうか?
他に不明な点があればお答え致します。それでは失礼します。
添付ファイル
スクリーンショット 2017-09-02 18.07.19 のコピー.jpg
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: マップを分割しての自動移動のやり方を模索しています

投稿記事by まっつUP » 2017年9月02日(土) 22:24

にゃたま様

試作してみました。

追記:イベントを組む前にこちらにあるプラグインを導入してください。
viewtopic.php?f=5&t=3671

並列処理のコモンイベント(条件任意)
◆ウェイト:1フレーム
◆条件分岐:スクリプト:$gamePlayer.x <= 0 || $gamePlayer.x >= $gamePlayer.EEendX()
◆変数の操作:#0010 x座標 = 0
◆変数の操作:#0011 y座標 = プレイヤーのマップY
◆ウェイト:1フレーム
◆スイッチの操作:#0001 移動自動実行用 = ON

:それ以外のとき
◆条件分岐:スクリプト:$gamePlayer.y <= 0 || $gamePlayer.y >= $gamePlayer.EEendY()
◆変数の操作:#0010 x座標 = プレイヤーのマップX
◆変数の操作:#0011 y座標 = 0
◆ウェイト:1フレーム
◆スイッチの操作:#0001 移動自動実行用 = ON

:分岐終了

:分岐終了

◆注釈:コモンイベント自動実行条件スイッチID1
◆画面のフェードアウト
◆変数の操作:#0009 現在マップ = マップID
◆変数の操作:#0012 列数 = 8
◆変数の操作:#0013 行数 = 6
◆変数の操作:#0014 分割マップ開始 = 32
◆変数の操作:#0017 計算用2 = 列数
◆変数の操作:#0017 計算用2 *= 行数
◆変数の操作:#0015 分割マップ終了 = 計算用2
◆変数の操作:#0015 分割マップ終了 += 分割マップ開始
◆変数の操作:#0015 分割マップ終了 -= 1
◆変数の操作:#0016 計算用 = 現在マップ
◆変数の操作:#0016 計算用 -= 分割マップ開始
◆変数の操作:#0016 計算用 %= 列数
◆条件分岐:プレイヤーが左を向いている
◆条件分岐:計算用 > 0
◆変数の操作:#0016 計算用 = -1

:それ以外のとき
◆変数の操作:#0016 計算用 = 列数
◆変数の操作:#0016 計算用 -= 1

:分岐終了

:それ以外のとき
◆条件分岐:プレイヤーが右を向いている
◆変数の操作:#0012 列数 -= 1
◆条件分岐:計算用 < 列数
◆変数の操作:#0016 計算用 = 1

:それ以外のとき
◆変数の操作:#0016 計算用 = 0
◆変数の操作:#0016 計算用 -= 列数

:分岐終了

:それ以外のとき
◆条件分岐:プレイヤーが下を向いている
◆変数の操作:#0015 分割マップ終了 -= 列数
◆変数の操作:#0015 分割マップ終了 += 1
◆条件分岐:現在マップ < 分割マップ終了
◆変数の操作:#0016 計算用 = 列数

:それ以外のとき
◆変数の操作:#0016 計算用 = 0
◆変数の操作:#0016 計算用 -= 計算用2
◆変数の操作:#0016 計算用 += 列数

:分岐終了

:それ以外のとき
◆変数の操作:#0014 分割マップ開始 += 列数
◆変数の操作:#0014 分割マップ開始 -= 1
◆条件分岐:現在マップ > 分割マップ開始
◆変数の操作:#0016 計算用 = 0
◆変数の操作:#0016 計算用 -= 列数

:それ以外のとき
◆変数の操作:#0016 計算用 = 計算用2
◆変数の操作:#0016 計算用 -= 列数

:分岐終了

:分岐終了

:分岐終了

:分岐終了
◆変数の操作:#0009 現在マップ += 計算用
◆場所移動:{現在マップ} ({x座標},{y座標})
◆ウェイト:1フレーム
◆変数の操作:#0010 x座標 = $gamePlayer.rookX(1)
◆条件分岐:x座標 ≤ 0
◆変数の操作:#0010 x座標 = $gamePlayer.EEendX() - 1

:分岐終了
◆変数の操作:#0011 y座標 = $gamePlayer.rookY(1)
◆条件分岐:y座標 ≤ 0
◆変数の操作:#0011 y座標 = $gamePlayer.EEendY() - 1

:分岐終了
◆場所移動:{現在マップ} ({x座標},{y座標})
◆画面のフェードイン
◆スイッチの操作:#0001 移動自動実行用 = OFF
最後に編集したユーザー まっつUP on 2017年9月03日(日) 17:01 [ 編集 1 回目 ]
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: マップを分割しての自動移動のやり方を模索しています

投稿記事by にゃたま » 2017年9月03日(日) 15:00

まっつUP様

まっつUP さんが書きました:試作してみました。


こんにちは。すみません、長いスクリプトでしたので検証に時間がかかってしまいました。

スクリプトをコモンイベントに書き込んでみましたが移動先が違ってしまうようです。
(以下に記載のコードはコモンイベントに記載したものからコピー&ペーストしております)

以下のコモンイベントは移動元マップ(id75)の左端(0,9)の位置に設置してプレイヤーから触れると反応する
triggerにより入ってみました。実行内容にはコモンイベントの呼び出しのみ記載されています。

プレイヤーの向きが左になる状態で進入しています。すると最初の場所移動コマンドの
移動先1はid:77 x:0 y:9になります。座標には入った位置と同じものが入っているようです。
後の場所移動コマンドの移動先2はid:77 x:94 y:9となります。同じ行の右端になっている
ので正常と思われます。尚1つのマップそのもののサイズは(96,96)となります。
只移動先idが左に侵入したのに後のマップになることがわかりません。それも2つズレているようです。

何か記述のミスがあったりするのでしょうか?
以上になりますがよろしくお願いします。

尚、添付画像は最初の移動コマンドを行う前の状態でこのようになっています。
次の移動コマンドの前にはx座標が94に変わります。

追記
因みにコモンイベントを並列処理で適当なスイッチをオンにして常に実行している状態にすると
Failed to load: data/Map083.jsonエラーが表示されます。

(x:4,y:0)の位置にコモンイベントを呼ぶイベントを設置したところ
移動先はid:75 x:4 y:94になり、やはりidだけがかわらないようです。

◆変数の操作:#0136 計算用 -= 1
の部分の記述が間違っておりました。正確には
◆変数の操作:#0136 計算用 = -1
でした。こちらを変更したところ左にあるコモンイベントに入ると前のマップに遷移できました。
但しまだ上に行ったときにidがかわらない件を調べています。

コード: 全て選択

◆ウェイト:1フレーム
◆条件分岐:スクリプト:$gamePlayer.x <= 0 || $gamePlayer.x >= $gamePlayer.EEendX()
  ◆変数の操作:#0130 x座標 = 0
  ◆変数の操作:#0131 y座標 = プレイヤーのマップY
  ◆ウェイト:1フレーム
  ◆スイッチの操作:#0161 自動移動実行用 = ON
  ◆
:それ以外のとき
  ◆条件分岐:スクリプト:$gamePlayer.y <= 0 || $gamePlayer.y >= $gamePlayer.EEendY()
    ◆変数の操作:#0130 x座標 = プレイヤーのマップX
    ◆変数の操作:#0131 y座標 = 0
    ◆ウェイト:1フレーム
    ◆スイッチの操作:#0161 自動移動実行用 = ON
    ◆
  :分岐終了
  ◆
:分岐終了
◆注釈:コモンイベント自動実行条件スイッチID 161
◆画面のフェードアウト
◆変数の操作:#0129 マップID = マップID
◆変数の操作:#0132 列数 = 8 //ここは8列なので変更させていただきました
◆変数の操作:#0133 行数 = 6
◆変数の操作:#0134 分割マップ開始 = 32
◆変数の操作:#0135 分割マップ終了 = 列数
◆変数の操作:#0135 分割マップ終了 *= 行数
◆変数の操作:#0135 分割マップ終了 += 分割マップ開始
◆変数の操作:#0136 計算用 = マップID
◆変数の操作:#0136 計算用 -= 分割マップ開始
◆条件分岐:プレイヤーが左を向いている
  ◆変数の操作:#0136 計算用 %= 列数
  ◆条件分岐:計算用 > 0
    ◆変数の操作:#0136 計算用 -= 1
    ◆
  :それ以外のとき
    ◆変数の操作:#0136 計算用 = 列数
    ◆変数の操作:#0136 計算用 -= 1
    ◆
  :分岐終了
  ◆
:それ以外のとき
  ◆条件分岐:プレイヤーが右を向いている
    ◆変数の操作:#0136 計算用 %= 列数
    ◆変数の操作:#0132 列数 -= 1
    ◆条件分岐:計算用 < 列数
      ◆変数の操作:#0136 計算用 = 1
      ◆
    :それ以外のとき
      ◆変数の操作:#0136 計算用 = 0
      ◆変数の操作:#0136 計算用 -= 列数
      ◆
    :分岐終了
    ◆
  :それ以外のとき
    ◆条件分岐:プレイヤーが下を向いている
      ◆変数の操作:#0135 分割マップ終了 -= 列数
      ◆変数の操作:#0133 行数 = -1
      ◆条件分岐:マップID < 分割マップ終了
        ◆変数の操作:#0136 計算用 = 列数
        ◆
      :それ以外のとき
        ◆変数の操作:#0136 計算用 = 0
        ◆変数の操作:#0136 計算用 -= 列数
        ◆変数の操作:#0136 計算用 *= 行数
        ◆
      :分岐終了
      ◆
    :それ以外のとき
      ◆変数の操作:#0134 分割マップ開始 += 列数
      ◆変数の操作:#0134 分割マップ開始 -= 1
      ◆条件分岐:マップID > 分割マップ開始
        ◆変数の操作:#0136 計算用 = 0
        ◆変数の操作:#0132 列数 -= 1
        ◆
      :それ以外のとき
        ◆変数の操作:#0136 計算用 = 行数
        ◆変数の操作:#0136 計算用 *= 行数
        ◆変数の操作:#0136 計算用 -= 1
        ◆
      :分岐終了
      ◆
    :分岐終了
    ◆
  :分岐終了
  ◆
:分岐終了
◆変数の操作:#0129 マップID += 計算用
◆文章:なし, ウィンドウ, 下
:  :移動先1:id:\V[129] x:\V[130] y:\V[131]
◆場所移動:{マップID} ({x座標},{y座標})
◆ウェイト:1フレーム
◆変数の操作:#0130 x座標 =  $gamePlayer.rookX(1)
◆条件分岐:x座標 ≤ 0
  ◆変数の操作:#0130 x座標 = $gamePlayer.EEendX() - 1
  ◆
:分岐終了
◆変数の操作:#0131 y座標 = $gamePlayer.rookY(1)
◆条件分岐:y座標 ≤ 0
  ◆変数の操作:#0131 y座標 =  $gamePlayer.EEendY() - 1
  ◆
:分岐終了
◆文章:なし, ウィンドウ, 下
:  :移動先2:id:\V[129] x:\V[130] y:\V[131]
◆場所移動:{マップID} ({x座標},{y座標})
◆画面のフェードイン
◆スイッチの操作:#0161 自動移動実行用 = OFF
添付ファイル
スクリーンショット 2017-09-03 14.55.43.png
最後に編集したユーザー にゃたま on 2017年9月03日(日) 15:52 [ 編集 1 回目 ]
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: マップを分割しての自動移動のやり方を模索しています

投稿記事by まっつUP » 2017年9月03日(日) 15:44

おや、ID32から42枚がワールドマップなのでは?


追記:少し調べてみます。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: マップを分割しての自動移動のやり方を模索しています

投稿記事by にゃたま » 2017年9月03日(日) 15:57

まっつUP様

まっつUP さんが書きました:おや、ID32から42枚がワールドマップなのでは?


ご指摘いただきありがとうございます。
すみません、私の計算ミスでした。失礼いたしました。

訂正
マップ枚数は横8、縦6の計42枚となります。

マップ枚数は横8、縦6の計48枚となります。
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: マップを分割しての自動移動のやり方を模索しています

投稿記事by にゃたま » 2017年9月03日(日) 16:06

まっつUP様

◆変数の操作:#0136 計算用 = 0
の記述が間違っていて
◆変数の操作:#0136 計算用 -= 列数
に変更したところ正常に上のマップに遷移できました。

あと下と右に移動したときも調査してみます。
ありがとうございます。
最後に編集したユーザー にゃたま on 2017年9月03日(日) 16:14 [ 編集 1 回目 ]
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: マップを分割しての自動移動のやり方を模索しています

投稿記事by にゃたま » 2017年9月03日(日) 16:11

まっつUP様

下に移動及び右に移動した時も問題ありませんでした。
助かりました!これでイベントをコピペするだけで自動化できます。
私のミスが重なり本当にお手数おかけしました。
これでなんとかゲームが完成できそうな気がしてきました。
またこのスクリプトで気になる点がありましたらこちらから報告させていただきたいと思います。

それでは要件のみですが失礼します。

追記
本当に本当にありがとうございました!!!
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 【解決済み】マップを分割しての自動移動のやり方を模索しています

投稿記事by まっつUP » 2017年9月03日(日) 17:04

自動実行の方を一応修正してみました。
なお、データベース「コモンイベント」の自動実行設定での処理を確認していますが
マップイベントでも成功するようなら問題ないでしょう。

追記:コモンイベントの並列処理でスイッチオンした後
自動実行で発動させるようにしています。
なお、今の時点で問題なく動いている場合は
そのままでいいと思います。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ

“MV:質問” へ戻る