こちらの実行アクションでは、大きく以下の3種類のデータを変更することができます。
- オブジェクトの変数/スイッチ
- データベースのデータ(ここにはプロジェクト共通の変数/スイッチも含まれます)
- 各ノードのプロパティ
それぞれについて解説します。
1. オブジェクトの変数/スイッチ
各オブジェクトのSwitchSettings/VariableSettingsノードに格納された変数/スイッチを変更することができます。
ただし、以下の変数/スイッチは読み取り専用の変数のため変更できません。
タイプ | 名称 |
---|---|
スイッチ | is_locked, is_touching_portal |
変数 | object_id, stayed_area_id, visible_direction, x_speed, y_speed, player_id, controller_id, taken_damage |
読み取り専用の変数/スイッチが存在する理由
関連リンク条件である「スイッチ・変数が変化した」 で扱うために存在しています。直接プロパティの値を条件とすることができないため、スイッチ・変数として連動して格納しています。
2.データベースのデータ
ユーザーデータベース/プロジェクト変数/プロジェクトスイッチを変更することができます。
タイププリセットとサウンドデータベースではこの実行アクションではアクセスできません。
レコードを変数で指定オプション
レコード(行)をオブジェクト変数で指定するオプションです。
指定した変数の値が5の場合、指定したカラム(列)の上から5行目のレコードが選択されます。
使用例としては、アイテムのデータベースを作成し、取得したアイテムの情報を表示するといったステートを作成する際、このオプションを使えば1つのステートで作成することができます。このオプションを扱わない場合は、アイテムIDの数だけ分岐が必要になってしまいます。
3.各ノードのプロパティ
ACTION GAME MAKER用のノードに限らず、各ノードのプロパティの値を変更することができます。
原則的にどのようなプロパティでも書き換えることができるので、一例として以下のようなことが可能です。
MoveAndJumpSettingsで加速移動プロパティを有効にして移動タイプを切り替える。
Sprite2DのVisibleプロパティを書き換えて非表示にする。
HitCollisionのDisabled(無効化)プロパティを有効にして当たり判定を無効にする。
Labelノードのテキストをデータベースの文字列データで書き換えて別のテキストを表示する。
親オブジェクトを対象にする際の挙動
親オブジェクトを対象にする際のみ、対象のシーン判定を行わない挙動としております。
そのため、親オブジェクトが指定したものとは別のシーンであっても、同じ項目が存在すれば正常に動作します。
これにより、ダメージ判定等共通の子オブジェクトが作成可能です。
プロパティを変更アクションをご利用頂く上での注意点
ユーザー変数/スイッチ/ノードの並び順を変更すると対象がずれる可能性があります。
こちらは、Godotの制約上、Index(並び順)指定で変更を行うためです。
上からX番目にあるプロパティを変更する、という挙動を行います。
そのため、「途中にあるユーザー変数を削除して繰り上げる」「ノードを入れ替える」といった動作をすると、設定済みのアクションの参照がすべてずれてしまいます。
ロックしたオブジェクト/指定したオブジェクト等を対象とした時、対象シーンをファイルシステムで動かす、ファイル名/フォルダ名を変える等の動作を行うと正常に動作しなくなります。
各対象シーンのパスは「文字列」で指定されているためです。
本来Godotではファイルシステムでシーンを動かしても自動でパスが更新されますが。ACTION GAME MAKERのアクションで指定するパスはただの「文字列」なので自動で更新されません。
こちらは、Godotの強力な再帰ループ検知/ブロックシステムを回避するための措置となっております。