イベントの条件分岐と、if文の違いについて

アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

イベントの条件分岐と、if文の違いについて

投稿記事by WTR » 2016年10月12日(水) 12:57

質問させてください。

---------------------------------
記述①

◇条件分岐(条件1)
処理1
◇それ以外のとき
処理2
◇分岐終了

◇条件分岐(条件1)
処理1’
◇それ以外のとき
処理2’
◇分岐終了

---------------------------------
記述②

if (条件1) {
処理1;
}
else {
処理2;
}

if (条件1) {
処理1’;
}
else {
処理2’;
}

---------------------------------

上記2つの記述で処理に違いが出るものでしょうか。
質問しているのは違う気がするからなのですが。。

イベントの条件分岐で記述した場合、処理1と処理1’が順に実行されますが
スクリプト欄に記述すると処理1’しか実行されないような気がします。

条件1が成立していれば処理1と処理1’が連続で実行されるが
処理1の直後に条件1が解除されたら処理2’が割り込む、ようにしたいのです。
イベントの条件分岐を作れば実現できるのですが
一部パラメータ化したくてスクリプト欄に記述したところ
嵌ってしまいました。
どう書くべきなのか、アドバイスを頂けないでしょうか。

よろしくお願いします!

※スクリプト記述の行数制限をとっぱらうプラグインを使用させて頂いています。

Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: イベントの条件分岐と、if文の違いについて

投稿記事by 奏ねこま » 2016年10月12日(水) 13:23

おっしゃられている現象を再現した実際のイベントを貼って頂けますか?
できればプラグインなしの状態で、新規イベントにて
必要最小限の記述にして頂けると助かります。
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: イベントの条件分岐と、if文の違いについて

投稿記事by WTR » 2016年10月12日(水) 15:48

すみません、新規プロジェクトで試してから聞いてみるべきでした。
カオスなイベントになってきているので、そこだけ切り出してみる作業を横着してしまいました。。
夜中になると思いますが、まずさらの状態に戻してもう一度試してみます。

が、一見して、そんなはずはない、ってことでしょうかね。。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: イベントの条件分岐と、if文の違いについて

投稿記事by WTR » 2016年10月12日(水) 22:35

んんー
新規プロジェクトでも、狙った動きにならないようです。

並列処理でピクチャの拡大率を変化させています。
スイッチ1,2をONにすると、

条件分岐を書いたほうは、150% -> 200% -> 250% -> 150% -> ...
と処理が繰り返されます。

スクリプト記述したほうはいきなり250%になって止まります。
並列処理の条件は満たし続けているけど、止まったまま。

同じ内容を記述してるつもりなんですが、なにか違いがあるのでしょうか。。
添付ファイル
ss.png
条件分岐.png
スクリプト.png
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: イベントの条件分岐と、if文の違いについて

投稿記事by まっつUP » 2016年10月12日(水) 23:15

WTR様
お世話になります。

this.wait(60)が働いているか確認しましたか?
RPGで笑顔を・・・

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

github
https://github.com/mattuup/RPGMakerMZ
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: イベントの条件分岐と、if文の違いについて

投稿記事by WTR » 2016年10月12日(水) 23:51

まっつUP様

ありがとうございます。
言われてみれば効いてないかもしれません。。

処理は上から実行されているけど、waitが効いていなくて一瞬で最後まで走ってしまってるということですかね。
なんとなく現象がわかってきました。

で、理由がよくわからないのですが

if ($gameSwitches.value(2)) {
$gameScreen.movePicture(2,0,200,100,150,150,255,0,60);
}else $gameScreen.movePicture(2,0,200,100,100,100,255,0,60);
------------------------------------------------------------------------------------ここでスクリプト区切る
this.wait(60);
------------------------------------------------------------------------------------ここでスクリプト区切る
if ($gameSwitches.value(2)) {
$gameScreen.movePicture(2,0,200,100,200,200,255,0,60);
}else $gameScreen.movePicture(2,0,200,100,100,100,255,0,60);
------------------------------------------------------------------------------------ここでスクリプト区切る
this.wait(60);
------------------------------------------------------------------------------------ここでスクリプト区切る

のようにスクリプトを区切ったら条件分岐と同じになりました!
一回で書くとダメでした。

とりあえず解決したっぽいのですが、これはなんでなんでしょうか。。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: イベントの条件分岐と、if文の違いについて

投稿記事by 奏ねこま » 2016年10月13日(木) 00:19

this.wait(60);というのは、そこで60フレーム止まってくれるものではなくて
「60フレーム待つ、という設定をする」だけの命令です。
設定だけして、その場では待ってくれません。
その設定が効くのは、イベントコマンドが完了した後です。
今回の場合(一度に全部書いたケースの場合)、スクリプトがすべて実行されたあとに60フレーム待つことになると思います。
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: イベントの条件分岐と、if文の違いについて

投稿記事by WTR » 2016年10月13日(木) 00:41

奏ねこま(@こま) 様

解説ありがとうございます。
ようやく納得がいきました。

しかし解決したかと思ったのもつかの間

本来やりたかった、座標とかピクチャ番号とかウェイト値をローカル変数化して
そこだけ書き換えて使いまわすというのが
イベントコマンドを分ける必要があるとなると使えないですね。。
もはや条件分岐をちまちまイベントで作成しても変わらないかなぁ。

とはいえ大変勉強になりました。
お二方とも、ありがとうございました!
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: イベントの条件分岐と、if文の違いについて

投稿記事by 奏ねこま » 2016年10月13日(木) 00:58

例えば、ですが。

this.AAA = this.AAA || {};
this.AAA.picture_id = 2;
this.AAA.picture_x = 200;
this.AAA.picture_y = 100;
this.AAA.wait_count = 60;

こんな感じで、thisに任意の変数を追加することで、似たようなことはできます。
変数名が他と被らないように注意する必要がありますが。

参考になれば。

“MV:質問” へ戻る