こんにちは。ITBです。
RPGツクールMZでゲーム制作を継続中。今回は最近すごく苦戦した内容をメモ代わりに書いておこうと思います。
RPGツクールで画像の表示や切り替えを行うにはイベントコマンドの”ピクチャの表示"を使うのですが特定のイベント処理を待たずに自動で切り替えるには表示と切り替えの間にウエイトを使うことになります。
しかしこのウエイトは普通に使うとゲーム全体が止まるため、その間プレイヤーは動くことができず、他のイベント処理も実行されません。それを意図している場合はもちろんそれでいいのですが、ピクチャの切り替えを独立させてプレイヤーが動けるようにしたり、他のイベントを同時に実行したい場合は並列処理を使います。
並列処理は実行条件が満たされる限り繰り返し行われるため、開始と終了を制御するためにスイッチや変数などで実行条件を付け加えてやる必要があります。
↓こういうこと。
①ピクチャを表示/切替するイベントでトリガーを並列処理にして出現条件にスイッチや変数などを指定。
②他のイベントで①のイベントの出現条件となるスイッチなどを操作し画像表示を制御する。
ここまではたぶんRPGツクールの基礎的な知識だと思います。 私は並列処理を最近知りましたがw
1作目を作ったときは並列処理を知らなかったので全く使いませんでした。エンドロール(クレジット)でピクチャを表示・切り替えしながら文字をスクロールさせるのに苦労したのですがこれを使えば簡単だったなぁ。(スクロールを分割して間に切り替えを入れました。切り替え処理は一瞬なので一応スクロールは動き続けているように見えます)
この処理を使って以下のようなことを表現したかったのです。
※例えなので制作中ゲームの内容ではありません。
「レールの上を電車が走り、踏切まで来ると遮断機が降りる。電車は走り続け、その間プレイヤーは動くことができる。」たったこれだけw
電車も踏切もピクチャ画像です。
ピクチャを移動するイベントをトリガー"並列処理"で作成します。移動するコマンドは前々回の記事で触れたスクリプトを使用。
遮断機の画像を切り替えるイベントを別で作成しておき、↓の処理をするイベントを作成 。
①電車の画像を踏切まで移動(完了までウエイト)
②遮断機の画像を切り替えるためのスイッチ操作
③このイベントを終了しその後の処理をするためのスイッチ操作
(電車を踏切先まで移動、遮断機を戻す、電車を初期位置まで移動 など)
実際に作成している内容はもっと複雑なのですが要点だけ書くとこんな感じ。
これを実行してみるとうまく行かなかったのです。
遮断機が降りたり降りなかったりw 常に降りないってことならまだわかる気がするんですが。2割くらいの確率で②が実行されず、③は確実に実行される。
( ゚Д゚)ハァ? 状態。
並列処理や自動実行はその実行判定が毎フレーム行われているとのことですが、それによってウエイトの後の処理がどこからスタートするのか不確定になってしまうのでしょうか。よくわかりません。
とりあえずウエイトの直後はスイッチ操作一つだけにしてその後の処理は別イベントにすることで問題は起こらなくなりました。解決するのに何日かかっただろう。1週間くらいかな? はっきりした原因はわかりませんが、いろいろ試したうち、ウエイトを外してみたときに処理順がうまくいったのでウエイトがきっかけになっていることは間違いなさそうです。
結論
並列処理×ウエイトは要注意(抽象的)
今日のらくがき
なんか遠近感ある絵を描こうかなーと思ったのですが初心者には激ムズでした(;´・Д・)
修正するほどおかしくなって行くような。途中から修正前がいいのか後がいいのかわからなくなってきます。
頭大きくね? → 修正
↓
脚長くね? → 修正
↓
胴長くね? → 修正
↓
腕大きくね? → 修正
↓
頭大きくね? → 修正
↓
ループ
まだ手を出すべき領域ではないのか・・・。
しかしこういうのはどう練習したらいいんだろう(´・ω・`)
ランキング参加中です。下のバナーをクリックして頂けるとやる気値が増幅します!!