MAX 7 right-to-left問題-補足-
以前投稿したright-to-left問題における補足。
基本的に、右からインプットされたものは、最終的に最も左からくるインプットによってbangされる。それはつまり、bangしたい対象がそのオブジェクトよりも左にあった場合には未反映状態となることを示す。
gateオブジェクトにおいて簡単なプロジェクトを見てみたい。
次の図において、左側のプロジェクトでは、丈夫のナンバーボックスを徐々に上げていくと、100を上回った際、本来であれば101の時にgateを通過したいのだが、gateオブジェクトへ101が入力される瞬間にはまだgateは開かれておらず、一瞬後に入力される[>100]の条件通過を受けて初めてgateが開かれる。そのため、101時点ではまだ数値は100のままであり、102になった際に先程開いたgateを、そのまま通過するという流れになるのである。
一方、右側のプロジェクトでは、まず[>100]の条件指定がgateオブジェクトへ送られてからナンバーボックスからの数値を受け取るため、正常に条件のみを通過した数値が下のナンバーボックスへ反映される。
より分かりやすい図がこちら。
始めに、左のbangから[>100]条件にはまる数値を入力し、gateを開いた状態にし、次に右bangから条件にハマらない数値を入力しても、先程開いたgateによって、数値は通ってしまうのである。
よって下図の場合でも同じ事が起きる。
この場合、50>x>150という範囲内でx軸(left値)を規定したいわけだが、それを指定するオブジェクト自体が、paintovalよりも左にあるため、条件を満たしている数値が送られても通過できない。
そのため、下図のように、条件判断を先に通らせてgateを開いた状態にしてから座標を送り込むことで、指定通りの結果が得られることとなるのである。