フリゲ関連講座 > 「動作を繰り返す」に潜む罠
「動作を繰り返す」に潜む罠
夕一、移動イベントを組む
やあ、ボク夕一!よろしくね!
今回はこんなイベントを組んでみようと思うよ!
1.P・G・エディがくるくる回り続ける
2.ウルファールさんがボクのところに来る
3.最後にボクが「\(^o^)/」と言って終了
よし、早速作ってみよう!
キャラクターの移動幅を0.5マスにしたから、移動イベントが長くなるね……。
エディの方は「動作を繰り返す」のチェックボックスをオンにしたから、くるくると回り続けるよ! というわけで、早速テストプレーしてみよう!
エディもくるくる回ってるし、ウルファールさんもボクの近くに来たけど……。
あれれ、いつまで経っても最後のメッセージが出ない……。
どうしてこうなった?
最後のメッセージが表示されない原因、そのカギは「動作を繰り返す」と「動作完了までウェイト」のせい。
動作を繰り返す設定にした場合、いつまで経っても動作完了にならないため
このまま動作完了までウェイトコマンドを使うと、いつまで経ってもウェイトが解除されません。
このミスは気付きにくいため結構厄介。
根本的な対策としては、「動作を繰り返す」設定で移動しているキャラがいるときは「動作完了までウェイト」を使わないこと。
では、このコマンドを使わないで目的の処理を組むにはどうすればいい?
方法1.「動作完了までウェイト」を使う前に問題のイベントの動きを止める
動きを止めるには動作を繰り返すのチェックを外した状態で何もない動作指定コマンドを入れる。
この方法は安全性は高いものの、当然ながらエディの動きが止まってしまいます。
方法2.「動作完了までウェイト」を使わず、普通のウェイトを使う
「動作完了までウェイト」を使わないので安全ですが、
フライングしたり移動後に待ち時間が発生しやすいのが難点。
ウェイトさせるフレーム数を調整して、ぴったりの時間を指定してもいいのですが……。
動作を繰り返す設定にした場合、いつまで経っても動作完了にならないため
このまま動作完了までウェイトコマンドを使うと、いつまで経ってもウェイトが解除されません。
このミスは気付きにくいため結構厄介。
根本的な対策としては、「動作を繰り返す」設定で移動しているキャラがいるときは「動作完了までウェイト」を使わないこと。
では、このコマンドを使わないで目的の処理を組むにはどうすればいい?
方法1.「動作完了までウェイト」を使う前に問題のイベントの動きを止める
動きを止めるには動作を繰り返すのチェックを外した状態で何もない動作指定コマンドを入れる。
この方法は安全性は高いものの、当然ながらエディの動きが止まってしまいます。
方法2.「動作完了までウェイト」を使わず、普通のウェイトを使う
「動作完了までウェイト」を使わないので安全ですが、
フライングしたり移動後に待ち時間が発生しやすいのが難点。
ウェイトさせるフレーム数を調整して、ぴったりの時間を指定してもいいのですが……。
たった一つの冴えた(?)やり方
方法3.通常変数とループを組み合わせる
ちょっと複雑な方法なので、まずはイベントコマンドをご覧ください。
赤線部分が今回追加した箇所。 動作完了を待ちたいイベントの移動処理の最後に変数の代入(加算でも可)を行う。
変数に代入されるまでの間、無限ループとウェイトで待ち続ける。
変数の値が変わったらループ中断、次の処理へ進む。
一見すると複雑に思えるかもしれませんが、実際使ってみるとそこまで大変ではない……はず。
むしろ自作システムとか組みたい人は、これくらいの処理くらい慣れておきなさい。
注意する点は、判定用の変数は必ず通常変数(\v[n])を使うこと。
それ以外のコモンイベントのセルフ変数・予備変数・データベースの値は使えないため注意。
その他、動作指定では「動作イベントの変数」への代入・加算も行うことが出来ますが、
実行中のイベント以外のセルフ変数を取得するのは少々面倒なため、素直に通常変数を使うことをおススメします。
直前に変数の数値をリセットさえしておけば、他のイベントで使いまわすことも可能です。
ちょっと複雑な方法なので、まずはイベントコマンドをご覧ください。
赤線部分が今回追加した箇所。 動作完了を待ちたいイベントの移動処理の最後に変数の代入(加算でも可)を行う。
変数に代入されるまでの間、無限ループとウェイトで待ち続ける。
変数の値が変わったらループ中断、次の処理へ進む。
一見すると複雑に思えるかもしれませんが、実際使ってみるとそこまで大変ではない……はず。
むしろ自作システムとか組みたい人は、これくらいの処理くらい慣れておきなさい。
注意する点は、判定用の変数は必ず通常変数(\v[n])を使うこと。
それ以外のコモンイベントのセルフ変数・予備変数・データベースの値は使えないため注意。
その他、動作指定では「動作イベントの変数」への代入・加算も行うことが出来ますが、
実行中のイベント以外のセルフ変数を取得するのは少々面倒なため、素直に通常変数を使うことをおススメします。
直前に変数の数値をリセットさえしておけば、他のイベントで使いまわすことも可能です。
\(^o^)/
(c)2014- sinusoidal wave