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

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

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

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

まっつUP様

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


わざわざそのような修正いただきなんとお礼を述べていいのか言葉が見当たりません。
自動実行できるか確認してみます。ありがとうございます。
自動実行なら並列処理と比べ処理速度的に有利そうなのでうれしいですね!

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

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

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

まっつUP様

まっつUP さんが書きました:追記:コモンイベントの並列処理でスイッチオンした後
自動実行で発動させるようにしています。


念の為お聞きしたいのですが
移動イベントをマップ周囲に設置せずともコモンイベントを並列処理にして
適当にスイッチを作成して指定して(ここでは「マップ自動移動有効」という名称にします)
そのスイッチをオンにしている間、マップ端にくると自動で移動できるという認識でよろしいでしょうか?

追記
すみません。あとこちらにすることの利点とかありますか?
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

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

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

その認識で大丈夫です。

利点は専用にマップイベントをつくらなくて良い点ですかね・・・。
条件を満たしている間は全マップで実行可能ですから。
RPGで笑顔を・・・

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

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

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

投稿記事by にゃたま » 2017年9月04日(月) 01:41

まっつUP様

折角教えて頂いたので、出来たら動作させたいのですがうまくいかなかったようです。
マップ自動移動有効スイッチをオンにすると暗転して戻ってこれなくなるようです。
念の為以下にコピペしましたが、目を皿にして確認したのですが
記述の間違いを発見することができませんでした。

文章コマンドで移動先がどうなっているか調べてみると
「移動先1 ID:\V[129] x:\V[130] y:\V[131]」の結果のみで移動コマンドが実行され無限ループしてました。
移動先1 ID:60 x:0 y:0
移動先1 ID:52 x:0 y:0
移動先1 ID:44 x:0 y:0
移動先1 ID:36 x:0 y:0
移動先1 ID:76 x:0 y:0
移動先1 ID:68 x:0 y:0
(この後は繰り返し)…

移動先2のほうを実行することはありませんでした。
イベントが不要ということで便利なスクリプトですのでできたら動かしたいところですが……

もし原因がわかればおしえていただきたいのですがわからなければ無理に調べる必要はありません。
その場合はイベントが必要ですが前回教えていただいたもので問題ありません。
折角並列処理バージョンを作っていただいたのにその成果を実践できず申し訳ございませんでした。


コード: 全て選択

◆ウェイト: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
◆変数の操作:#0133 行数 = 6
◆変数の操作:#0134 分割マップ開始 = 32
◆変数の操作:#0137 計算用2 = 列数
◆変数の操作:#0137 計算用2 *= 行数
◆変数の操作:#0135 分割マップ終了 = 計算用2
◆変数の操作:#0135 分割マップ終了 += 分割マップ開始
◆変数の操作:#0135 分割マップ終了 -= 1
◆変数の操作:#0136 計算用 = 現在マップID
◆変数の操作:#0136 計算用 -= 分割マップ開始
◆変数の操作:#0136 計算用 %= 列数
◆条件分岐:プレイヤーが左を向いている
  ◆条件分岐:計算用 > 0
    ◆変数の操作:#0136 計算用 = -1
    ◆
  :それ以外のとき
    ◆変数の操作:#0136 計算用 = 列数
    ◆変数の操作:#0136 計算用 -= 1
    ◆
  :分岐終了
  ◆
:それ以外のとき
  ◆条件分岐:プレイヤーが右を向いている
    ◆変数の操作:#0132 列数 -= 1
    ◆条件分岐:計算用 < 列数
      ◆変数の操作:#0136 計算用 = 1
      ◆
    :それ以外のとき
      ◆変数の操作:#0136 計算用 = 0
      ◆変数の操作:#0136 計算用 -= 列数
      ◆
    :分岐終了
    ◆
  :それ以外のとき
    ◆条件分岐:プレイヤーが下を向いている
      ◆変数の操作:#0135 分割マップ終了 -= 列数
      ◆変数の操作:#0135 分割マップ終了 += 1
      ◆条件分岐:現在マップID < 分割マップ終了
        ◆変数の操作:#0136 計算用 = 列数
        ◆
      :それ以外のとき
        ◆変数の操作:#0136 計算用 = 0
        ◆変数の操作:#0136 計算用 -= 計算用2
        ◆変数の操作:#0136 計算用 += 列数
        ◆
      :分岐終了
      ◆
    :それ以外のとき
      ◆変数の操作:#0134 分割マップ開始 += 列数
      ◆変数の操作:#0134 分割マップ開始 -= 1
      ◆条件分岐:現在マップID > 分割マップ開始
        ◆変数の操作:#0136 計算用 = 0
        ◆変数の操作:#0136 計算用 -= 列数
        ◆
      :それ以外のとき
        ◆変数の操作:#0136 計算用 = 計算用2
        ◆変数の操作:#0136 計算用 -= 列数
        ◆
      :分岐終了
      ◆
    :分岐終了
    ◆
  :分岐終了
  ◆
:分岐終了
◆変数の操作:#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
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

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

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

◆注釈:コモンイベント自動実行条件スイッチID 161
以降の処理はトリガーが自動実行のコモンイベントに分けてください。
RPGで笑顔を・・・

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

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

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

投稿記事by にゃたま » 2017年9月04日(月) 19:49

まっつUP様

まっつUP さんが書きました:◆注釈:コモンイベント自動実行条件スイッチID 161
以降の処理はトリガーが自動実行のコモンイベントに分けてください。


なるほど、あの注釈はそういう意味があったのですね。
すみません。注釈の意味を理解していませんでした…

(追記)何故前回のバージョンのが分割せずに動いたのかは謎ですね(^^;

マップの端にくると自動で移動するようになりましたが
x若しくはyが0の位置に出る為に再度画面の端に来たと認識して
変なマップに行ってしまうようです。

具体的には
ID57のマップならx:89 y:0から入ると移動先はID:49 x:89 y:0になってしまいます。
又、x:95 y:7なら移動先はID:58 x:0 y:7になります。xが0の為に再度移動してしまいます。

以上のような症状ですが改善策がありましたら教えて頂けたら幸いです。
記述は何度も確認したのですがわかりませんでした。
(もしかしたら思い込みで問題ないと思い込んでしまっているところがあるのかもしれません)

スクリーンショット 2017-09-04 19.57.37.png
1

スクリーンショット 2017-09-04 19.58.01.png
2

スクリーンショット 2017-09-04 19.58.20.png
3

スクリーンショット 2017-09-04 19.58.32.png
4
最後に編集したユーザー にゃたま on 2017年9月04日(月) 20:11 [ 編集 1 回目 ]
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

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

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

添付ファイルの限界で前のに載せることができなかったのでこちらに載せます

追記
すみません。前からずっと疑問になってたのですが
場所移動を二回する意味ってなんでしょうか?
添付ファイル
スクリーンショット 2017-09-04 20.01.00.png
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

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

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

値が0以下ならマップ端-1の座標が変数に代入されるはずなので
スクリプトでの変数取得がうまく行えていない可能性があります。
そもそも、ここでつまづくようでは最初の案でもだめだと思いますが・・・。

追記:場所移動を2回するのは移動先のマップの端の座標を取得するためです。
位置を揃えてからフェードインします。

追記2:わざと不自然な方向で4隅の角に立っても0を含む座標に一回行くかいかないかくらいですね。

追記3:-2じゃなくて-1でした。
RPGで笑顔を・・・

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

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

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

投稿記事by にゃたま » 2017年9月04日(月) 21:39

まっつUP様

まっつUP さんが書きました:スクリプトでの変数取得がうまく行えていない可能性があります。


念の為申しますと、EventEnemiesのみONで他は全てOFFにした状態で確認しております。
前回うまくいってたのがホントに謎です。
旧Verを分割したら新Verと同じような不具合のある状態になりました。
旧Verを元に戻した所何故か症状が回復せず動作しなくなりましたorz
まっつUP様のほうでうまく動くのであれば環境に影響していると
いうことになるのでしょうか。

症状としては以下の動画を参照ください。
https://youtu.be/mTJmVHiVsAo⇐追記:こちらの動画うまくアップロードできてなかったですが
こちらの件について解決しましたので無視してください。

もう少し調査してみます。

追記
コモンイベントを複数作成していたので紛らわしいことになってました。
旧Verに実行する前のスクリプトが入って無かったことに気がついてもとに戻したら
イベント接触で動作するようになりました。
完全な自動移動のほうはもっと調査する必要があります。

追記
新Verの分割後は以下の動画のような感じになります
https://youtu.be/EZ2jScXuKtk

追記
移動先2が正常な数値になったのですが移動先2の値が反映されず…
https://youtu.be/p8fLJJUlt5w

すみません。ちょっと煮詰まってしまったので明日また頭をリフレッシュして考えます。
スクリーンショット 2017-09-04 22.52.57.png


追記
当方コアスクリプト1.5.0を使用していますがまっつUP様も同じバージョンでしょうか?
提案ですがもしよろしければですがまっつUP様の正常に動作しているプロジェクトを
何処かにアップロードしていただくことは出来ないでしょうか?(これは最終手段になりますが)
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

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

投稿記事by にゃたま » 2017年9月05日(火) 08:39

まっつUP様

おはようございます。朝から心機一転考えてみました。

大変お手数おかけしました。
プロジェクトをアップロードする必要がなくなりました。

原因がやっとわかりました。動画のほうで診てもらうと
わかるのですが文章の表示まではx、yの値が正常なのですが
移動のほうでその値がうまく反映されてませんでした。
ということで文章の表示でブロックしているようだったので
文章の表示を外してみました。
すると正常に指定した座標に移動するではありませんか!
ということで原因はデバッグの為に入れていた文章の表示コマンドでしたorz
文章の表示は変数をリセットしてしまう効果があるのですね、、
今まで何度か使ってましたがリセットされたりはしなかった記憶があるので。
原因はそこにあったようです。

ここまで何度もお手数おかけして申し訳ございませんでした。
これでスッキリしました。真の意味で解決済みと致します。

ホントのホントの本当にありがとうございました!!!

追記
尚、旧Verでも文章の表示コマンドを削除することで動作しました。新、旧の違いがよくわからないですが(^^;

追記
新旧の違いわかりました。新のほうはループマップに対応していました。すごいです。コレで飛空艇で飛び回れます(^^;

“MV:質問” へ戻る