【GDevelop】「条件を反転」した時によくある勘違いと「ではない」の使い方
GDevelop のイベントでは条件の結果を反転させることができます。 これはプログラミングで言うところの NOT 演算子と同じ、と思いがちですが、GDevelop の条件は単なる真偽値(True / False)の評価だけではなく、オブジェクトが絞り込まれる、という特徴があることを忘れてはいけません。 (NOT 演算子とは真偽値を真なら偽に、偽なら真に反転させる演算子です) 例えば、次の画像のようにイベントが組まれていたとします。 条件が反転されていることに注意してください。 これを見た時に「なるほど、条件は反転されているから、カーソルが WoodCrate 上にない時だけ Tank が移動して、逆に カーソルが WoodCrate の上にある時は実行されないんだな。 完全に理解した!」 などと思ってはいけません。 実はこのイベントのシーンはこうなっています↓ なんと WoodCrate は複数あったのです!😅 よく訓練された GDevelop ユーザーであれば、この時点で WoodCrate の上にカーソルがあっても、先程のイベントは 実行されてしまう ことに気が付くはずです。 どういうことかと言うと、実は先程のイベントは…… 「カーソルが WoodCrate 上にない時に Tank が移動する」 という事ではなく、 「カーソルが上にない WoodCrate に絞り込んで Tank を移動する」 という解釈が正解になります。 つまり、条件の最終的な結果が反転するのではなく、 反転しているのは個々のインスタンスの評価 である点に注意してください。 これは「カーソル/タッチはオブジェクト上にある」条件だけでなく、他の条件でも同様です。 そのため、実際にはどちらかの WoodCrate 上にカーソルが乗っていても、他にカーソルが乗っていない WoodCrate があるので、このイベントが偽(False)になる事はありません。(スマホであればマルチタッチで条件を満たすことができますが……) 条件を反転させた時どのような効果に変化するか、よく確認してから反転を利用するようにしましょう。 単に結果を反転させたい場合は? では、上記のように絞り込みを反転するのではなく、単に結果を真偽値として反転させたい場合は、どうしたら良いのかというと…… 「ではない」を使います。 この「