
GDevelopでランダムな攻撃選択を正確に行う方法
GDevelopのコミュニティフォーラムで、ボスキャラクターの攻撃選択に関する興味深い議論が行われています。
開発者は、ボスが攻撃後に次に実行する攻撃を2つの異なる攻撃の中からランダムに選びたいと考えています。しかし、`RandomInRange`アクションを使用しても、指定した2つの数値そのものではなく、その間のすべての数値をランダムに取得してしまっているようです。その結果、ボスが同じ2つの攻撃を繰り返し、あまり変化が見られないという状況が発生しています。
具体的には、攻撃が切り替わるタイミング(`ReadyToChange`というブーリアン変数が`True`になる時)で、`AttackMove`変数の値が`CurrentMoveTracker`に保存されます。その後、`MoveTransitionSelection`変数に`RandomInRange`でランダムな数値を設定し、その数値によって次の`AttackMove`変数の値が決まる、というロジックが組まれています。

この開発者は、「指定した2つの数値のどちらかだけを正確に選ばせるにはどうすれば良いか?」と問いかけています。
この問題に対して、フォーラムの他のユーザーからは、`RandomInRange`の代わりに、特定の数値を直接指定するイベントを作成する、あるいは配列などを使って選択肢を管理するといった解決策が提案されています。例えば、1か2のどちらかを選ぶようにしたい場合、`Random(2) + 1`のように計算式で範囲を限定したり、あるいは「`AttackMove` が 1 なら次の攻撃を 2 に、`AttackMove` が 2 なら次の攻撃を 1 にする」といった条件分岐で実装する方法が考えられます。

ランダムな数値を扱う際は、期待通りの範囲や結果を得るために、イベントの組み方や使用するアクションの仕様を正確に理解することが重要です。この議論は、GDevelopでより多様なゲームプレイを実現するためのヒントとなるでしょう。
