複数の条件分岐の AND OR の挙動について


アクツクのバージョン: v1.0.12 based on Godot v4.3.1 [861d96a50]
OS:windows11
CPU:i5-12600K
GPU:RTX3060
メモリサイズ:32GB

症状:
リンクのその他の条件の、AND、ORの使い方ですが
この画像の形で、アクツクMVと同じと考えて大丈夫でしょうか?

ひとまず、この扱いで合っているとして進めます。
条件①もしくは条件②のどちらかを満たしていれば遷移するとしたいのですが

②だけを満たしている時は遷移するのでが、①だけを満たしている時は遷移しません。

もちろん、アクツクMVではこの条件で問題なく動いています。
アクションゲームメーカーの方でも、下二つを消して、条件①だけにすると
問題なく遷移します。

ご確認頂ければと思います。

リンクの条件については正しいですが、条件①もしくは条件②のどちらかを満たしていれば遷移するとしたい場合は少し工夫が必要です。

こちらに記載をさせていただいたのですが、
A AND B OR C AND D
と4つの条件を作った際の計算は
(((A AND B) OR C) AND D)
という条件式となり、AとBを満たし、同時にDを満たすか、CとDを満たす場合に条件を満たします。

もし、ご希望のように遷移条件を設定したい場合は。
2つのリンクに分ける必要があります。
A&Bのリンク1
C&Dのリンク2
と分けます。

いまのところ一つのノードに2つのリンクを繋げない(これは改修を予定していますが)ため、
リンク1をつなげる迂回用ステート1
リンク2をつなげる迂回用ステート2
を作成し、そこから無条件遷移条件でもともと遷移したいステートにつなぎます。
この際、「1フレームを経過しない。」オプションを有効にすれば判定が遅れるようなこともありません。

お返事ありがとうございます。
(((A AND B) OR C) AND D)という式がややこしくて、まだピンときていないのですが・・。

ひとつお聞きしたいのは、アクツクMVと、AND OR の仕様が変わったということでしょうか?
アクツクMVと挙動が違うので、バグとして報告させて頂いたのですが。

私がやっている作業は、アクツクMVでずっとつくっていたものの、AGMへの移植なのですが
アクツクMVでつくっていたものには、この手の遷移はそれなりの数があり
上記のAND OR の条件で、すべて望み通りの遷移をしていました。

AGMではそれらの仕様が変わり、今後は新しいやり方で製作する必要があると認識すれば良いのでしょうか?

こちら現在の仕様としては新しいものになります・・・が、
確かに普通に考えると(A AND B) OR (C AND D)の形になるほうが自然な気はしますね。
少し開発と協議してみます。

「いいね!」 3

ありがとうございます 汗
すみません、(((A AND B) OR C) AND D)というのが、ホントによく分からなくて(^^;

これ私もちょうど引っかかってました・・・。

変な実装法ですがステートを非ユニークでコピペして二つ並べて、それぞれにA&B、C&Dで遷移するのが今の仕様だと一番スマートかもしれません。(もう気づいてるかもしれませんが)

「いいね!」 1

そうですね、Moonling様もその方法を紹介して下さっています。
他の投稿ですが、AステートからBステートへのリンクが1本しか繋げない問題で私もその方法でやっているのですが、間に挟むダミーの様なステートは、1フレームを経過しないにチェックをいれたり、その他の項目、例えば左右の移動速度など、各種項目を1つ前のステートと同じにしないといけないなど、けっこう面倒なのですよね。

ごく希な作業ならともかく、AND OR の仕様変更でも、ステート間リンク1本問題でもその作業が必要となると、結構な頻度でその面倒な作業を行わないといけない様に思いますので、できれば改良して頂けると嬉しいですね。
アクツクMVでうまく動いていた部分は、できるだけAGMでも採用して貰いたいところです。
もちろんアクツクMVよりも、より良くなる改良は大歓迎です。

「いいね!」 1

欲張りかもしれませんですかリンク条件に算式みたいの括弧機能追加できますかな…?

「いいね!」 1

たしかに括弧を自分で好きな位置に付けられたら、全て解決しそうですね。

(変数A=1 and 変数B=2) : 変数Aが1 なおかつ 変数Bが2 のとき遷移
(変数B=2 or 変数C=3) :変数Bが2 もしくは 変数Cが3 のとき遷移
(変数A=1 and 変数B=2) or (変数B=2 and 変数C=3) :変数Aが1 なおかつ 変数Bが2 のとき、もしくは 変数Bが2 なおかつ 変数Cが3 のとき遷移
(変数A=1 and (変数B=2 or 変数C=3)) :変数Aが1でなおかつ 変数Bが2 もしくは 変数Cが3 のとき遷移

こんな感じでしょうか? プログラムを少しだけかじっている自分としてはとても分かりやすいですが、VSでどう落とし込まめますかね。括弧機能追加というのは、希望を感じちゃいます。とにかく使いやすくわかりやすくなって欲しいですね♪

失礼しました、ご助言をちゃんと理解出来ていませんでした。
非ユニークでコピーですか、なるほど、それだと別のダミーステートをつくる必要はないわけですね、確かにそれが今のところ一番スマートですね。

ただ今後はやはり、括弧を何とか導入して頂けると嬉しいですよね。
(((A and B) or C) and D) ←この式自体、ピンとこないややこしさもあるのですが、それよりも現状の
A and B or C and D が (((A and B) or C) and D) になるのが直感的ではないと思いますし
そもそも、アクツクMVのときの、
A and B or C and D が (A and B) or (C and D) というのも、まだスッキリしているとはいえ、括弧がないのになぜこうなるのか?
というのがありますよね。
しかもこのやり方だと、たとえば
(A and B) and (C or D or E) という感じで、(A and B)を全ての条件に入れたい場合

(A and B and C) or (A and B and D) or (A and B and E)

という感じの条件になり、すごく大変だったんですよね・・。
実際には括弧は無いので、↓となり、アクツクMVでつくっていて相当ややこしくなっていました。

A and B and C or A and B and D or A and B and E

上記の場合、リンク線をorごとに3つにわける方法もありますが
AGMでは1本しか繋げないという現状もあります・・涙

また、まずは(A and B)条件のアクション(ステート)と経過してから、次の分岐にというやり方もありますが
アクツクMVでは、コモンアクションへの入り口に上記の様な複雑な条件をたくさん使っていたので、なかなかアクション(ステート)を分けるのも難しく・・。出来なくはないと思いますが、出来るだけ一か所の画面で条件をまとめたいですよね。

やはりAGMでは、何とか括弧をユーザー側で入れられる仕様にして頂きたいですが、難しいのですかねぇ・・。
その場合は、せめてアクツクMVの仕様には戻して頂きたいです。

「いいね!」 1