【解決済み】操作キャラの変更(変更後もマップに表示)

もも太郎
記事: 14
登録日時: 2023年3月08日(水) 10:37

【解決済み】操作キャラの変更(変更後もマップに表示)

投稿記事by もも太郎 » 2023年3月08日(水) 10:57

こんにちは
ツクールMVにて「離れた場所にいる操作キャラAとBを切り替え、かつパーティーは常に1人」になる状態にしたく、以下の記事を参考にしたのですが
viewtopic.php?t=5718

この記事で書かれていた
・変数1~6に操作キャラAとBのマップIDを含む初期座標
・変数7に現在の操作キャラ
の保存方法についてご教示頂きたいです。また、マップ上に切り離されたAかBが最後の地点に表示され、操作キャラで話しかけると会話(数回可)が発生するイベントを作りたいです。欲張りですみません。
お手数をおかけしますが、宜しくお願い致します
最後に編集したユーザー もも太郎 on 2023年3月15日(水) 10:22 [ 編集 1 回目 ]

ミズナギ
記事: 27
登録日時: 2023年3月11日(土) 18:20

Re: 操作キャラの変更(変更後もマップに表示)

投稿記事by ミズナギ » 2023年3月11日(土) 18:52

こんばんは。面白そうだったので、サンプルつくってみました。
必要最低限の構成だけですし、他にもっと良い方法もあるかもしれませんが、処理の叩き台にでもしてみてください。

sample_pc2change.zip
(10.52 KiB) ダウンロード数: 5 回

※全部のマップにイベント置く形になるので、コモンイベント駆使するか、テンプレートイベント系のプラグイン使うのが良いと思います。


ちなみに今回の処理の考え方も一応書いておきます。

・最初にキャラAとキャラBの各スタート地点のマップID、X位置、Y位置を変数に入れておく

ご質問の「変数1~6に操作キャラAとBのマップIDを含む初期座標」の部分ですね。
自分で数値を代入しても良いし、変数の操作からゲーム情報を代入することもできます。

・ひとつのマップにつき、以下の3つのイベントを設置します

イベント1:白紙のページ、キャラAの画像を表示するページ、キャラBの画像を表示するページ

操作キャラで話しかけると会話が発生するイベントがこれですね。
複数回、内容を変えたいなら、その判定用の変数を用意して各キャラのページの中で条件分岐させて、会話用のコモンイベントを呼ぶのが良いかと。

イベント2:イベント1のどのページを表示するかの条件分岐を書いたもの(自動実行)

パーティは常に1人であるなら、パーティにどのアクターがいるかの条件分岐が使えるので、「変数7に現在の操作キャラ」を保存しなくても、メンバーの入れ替えだけで済みます。

イベント3:特定のキーが押されたかどうかを判定するページ(並列処理)、実際に操作キャラを変更する処理を書いたページ(自動実行)

操作キャラを切り替える前に、現在のマップID、X位置、Y位置をキャラA→Bなら変数1~3、キャラB→Aなら変数4~6に入れ直します。(変数の操作から代入)
この変数をイベント移動コマンドで指定してイベント1を移動させ、もう一方のキャラ用の変数を場所移動コマンドで指定(A→Bなら変数4~6、B→Aなら変数1~3を指定)することで、操作キャラを切り替えたようになります。
もも太郎
記事: 14
登録日時: 2023年3月08日(水) 10:37

Re: 操作キャラの変更(変更後もマップに表示)

投稿記事by もも太郎 » 2023年3月15日(水) 09:44

ミズナギさん。ご丁寧にありがとうございます
さっそく挑戦してみたいと思います!
もも太郎
記事: 14
登録日時: 2023年3月08日(水) 10:37

Re: 【解決済み】操作キャラの変更(変更後もマップに表示)

投稿記事by もも太郎 » 2023年3月15日(水) 16:33

質問失礼いたします
ミズナギさんの方法を参考にさせて頂いたのですが、シフトキーを押した後にキャラクターAとB両方のが透明状態になってしまいます。何度もプログラムを確認しましたが相違なく、透明状態でのスタートもしておりませんのですが…何らかの不具合でしょうか
ミズナギ
記事: 27
登録日時: 2023年3月11日(土) 18:20

Re: 【解決済み】操作キャラの変更(変更後もマップに表示)

投稿記事by ミズナギ » 2023年3月16日(木) 07:00

原因を探るために、いくつか確認させてくださいませ。

1. まず、何も手を加えない状態で、新規プロジェクトに入れたサンプルをそのままテストプレイしてみて、きちんと操作キャラの切り替えができましたか? サンプルのテストプレイでも透明状態になってしまいますか?

2. 透明状態になる前に、フェードアウト→場所移動→フェードインの流れは実行されますか? フェードアウトすら実行されず、マップの移動もしないで、シフトキーを押した瞬間にその場でキャラだけが画面から消えてしまう感じでしょうか? それとも、画面全体が真っ暗になったりする変化がありますか?

3. シフトキーを押す前と、押した後(透明状態になったとき)で、それぞれF9キーでスイッチや変数の一覧を出してみて、正しく数値の代入や変更がされていますか?

4. コマンドの流れだけでなく、イベントID、変数番号、スイッチ番号、アクターのID、キャラの画像など、サンプルと違っている箇所はありませんか? 変更している場合は、変え忘れている箇所がありませんか?

以上について、状況を教えていただけると原因を探る手がかりになります。


サンプルだけなら正常に動くが、自分のプロジェクトに導入させたら不具合が起きた、という状態であれば、最も有力に思われる原因は、サンプルでいうところの「別視点」のイベントを正しく設置できていない、あるいは、正しく指定できていない、でしょうか。
サンプルでは該当のイベントを移動させるために

コード: 全て選択

◆イベントの位置設定:別視点, ({PC1座標X},{PC1座標Y}) (向き: 下)

という感じに指定していますが、これはすべてのマップに、同じイベントIDで置いてあることが前提です。
たとえばマップAがイベントID1、マップBでイベントID2になっていたりすると、正しく表示できません。


あとは、他のイベントの並列処理や自動実行の処理などと干渉して不具合が起きる可能性もあります。
特に並列処理関連は不具合が起きやすいので、

コード: 全て選択

◆画面のフェードアウト
◆スクリプト:console.log("フェードアウトOK");
◆メンバーの入れ替え:マーシャを加える
◆メンバーの入れ替え:ハロルドを外す
◆スクリプト:console.log("メンバーの入れ替えOK");
◆イベントの位置設定:別視点, ({PC1座標X},{PC1座標Y}) (向き: 下)
◆スクリプト:console.log("イベントの位置設定OK");
◆場所移動:{PC2マップID} ({PC2座標X},{PC2座標Y}) (向き: 下, フェード: なし)
◆スクリプト:console.log("場所移動OK");
◆画面のフェードイン
◆スクリプト:console.log("フェードインOK");

のような感じでコマンドの合間合間にログへの出力を仕込んでみて、テストプレイ中にF8キーを押して、どこまでなら処理が実行されているかを確かめると原因の範囲を絞り込みやすいかと思います。
(画面が真っ暗にはなるのに「フェードアウトOK」のログが出力されなければ、フェードアウト以降の処理が実行できていない、という感じ)
もも太郎
記事: 14
登録日時: 2023年3月08日(水) 10:37

Re: 【解決済み】操作キャラの変更(変更後もマップに表示)

投稿記事by もも太郎 » 2023年3月16日(木) 17:00

1.サンプルは問題なく切り替えができています

2.いくつか改善を行いました。すると以下の画像のように『操作キャラの交代が出来ており、位置情報も記録できている状態だが、操作キャラだけが常に透明状態』になってしまうようです

3.座標やマップIDに問題はありませんでした。シフトキーを押す前も押した後も「別キャラを表示する」「並行処理」のスイッチの二つが常にONになっています

4.変数番号は2から4を予め使用していた為0005の変数から順に設定をしました。
スイッチは2から6を予め使用していたので「0007別キャラを表示する」「0008並行処理」「0009別キャラ表示判定」としています。
ハロルドをオリジナルのキャラチップに、アクター0003をハロルドにしています

スクリプトを使いログを確認いたしました。
右側のunknownというのは読み込み不可なのでしょうか。Consoleの画面上には全てのスクリプトのログが表示されました
添付ファイル
IMG_20230316_170408.jpg
画像が粗く申し訳ございません
ミズナギ
記事: 27
登録日時: 2023年3月11日(土) 18:20

Re: 【解決済み】操作キャラの変更(変更後もマップに表示)

投稿記事by ミズナギ » 2023年3月16日(木) 23:05

ご協力ありがとうございます、状況が理解できました。
イベント側のキャラ表示は問題なく、操作キャラの表示だけが透明状態になってしまうということですね。

試しに、操作キャラを切り替える部分の場所移動コマンドとフェードインコマンドとの間に、

コード: 全て選択

◆場所移動:{PC2マップID} ({PC2座標X},{PC2座標Y}) (向き: 下, フェード: なし)
◆透明状態の変更:OFF
◆画面のフェードイン

という感じで、透明状態をOFFにするコマンドを入れてみるとどうなりますか?
これでも変わらず透明になってしまいますか?

もし、これで直るようであれば、マップイベントやコモンイベントのどこかに、透明状態をONにするコマンドを入れている箇所がないか確認してみてください。
(あるいは場所移動やフェード効果などに関係するプラグインを使っているようであれば、そちらが影響している可能性も考えられます)
もも太郎
記事: 14
登録日時: 2023年3月08日(水) 10:37

Re: 【解決済み】操作キャラの変更(変更後もマップに表示)

投稿記事by もも太郎 » 2023年3月17日(金) 19:00

ご返信ありがとうございます

以下のように透明化OFFを設定しましたが、変わらず透明になってしまいました

透明化のコマンドなしで組んでおり、シフトキーを押す前は両者が画面に表示されているのですが…
これからプラグインの線を探ってみようと思います
添付ファイル
IMG_20230317_185424.jpg
ミズナギ
記事: 27
登録日時: 2023年3月11日(土) 18:20

Re: 【解決済み】操作キャラの変更(変更後もマップに表示)

投稿記事by ミズナギ » 2023年3月17日(金) 21:42

透明化OFFで直らないのであれば、透明状態になっているとは限らないかもしれませんね。
場所移動先の座標がマップ外になってしまっているようだと、画面から消えたように見えたりもします。
たとえば、17x13のマップなのに座標用の変数に17x13以上の数値やマイナスの数値が入っていると、マップ外にキャラが移動してしまうことになります。

キャラが透明状態になっているだけであれば、画面を左クリックすると普通に歩く動作が起きます(通常の歩行するときの白い四角のフォーカスが出ます)が、マップ外に移動してしまった場合は歩く動作ができないので、そのあたりも確かめてみると、どちらなのかの目安になるかと思います。

もしマップ外にいるのならば、おそらく座標用の変数に代入する数値がおかしくなっている可能性があります。
ゲームの開始時に初期位置の数値がきちんと正しく代入されているか(マップの範囲より大きい数値が指定されていないかどうか)の確認と、シフトキーを押す前と押した後でF9キーを押して、座標用の変数に代入されている数値がマップの大きさの範囲におさまっているかどうかをもう一度よく確認してみてください。
もも太郎
記事: 14
登録日時: 2023年3月08日(水) 10:37

Re: 【解決済み】操作キャラの変更(変更後もマップに表示)

投稿記事by もも太郎 » 2023年3月18日(土) 12:35

無事に透明化を解除できました!
どうやら私のコマンドミスだったようで、大変お騒がせいたしました。最後までお付き合い頂き誠にありがとうございました

“MV:質問” へ戻る