golaemの挙動は「ノード」で制御されています。
一見複雑に見えるこのシステムですが、Operators(演算ノード)とTriggers(発動条件ノード)を理解すれば、行動設計が一気に楽になります。
Operators(オペレータ)ノード
Operatorsは、「条件の処理」や「制御の加工」を行うノードです。
Triggerで起きた出来事を、どう扱うか・どう判断するかを決める役割を担います。
| アイコン | 名前 | 説明 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| Behavior Container | ノードをまとめます。要はグループ。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Loop | 同じ動きを指定した回数分、何度も繰り返します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Parallel | 別々の動きを、待ち時間なしで一気に同時に動かします。同時進行。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| NoOrder | 一連の動作をランダムな順番で実行します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| If | 「もし敵がいたら攻撃、いなければ歩く」のように、 条件に合わせて動きを枝分かれさせます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Random | その名の通り、複数のノードの中から、ランダムに選択します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Block | トリガーが「真(true)」を返すまで(合図を出すまで)処理を停止し、 その後指定されたフレーム数だけ待機(遅延)します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Anchor | ノードを見やすくする為のピン。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Triggers(トリガー)ノード
Triggersは、「何が起きたら行動するか」を定義するノードです。
行動の「きっかけ」を作るセンサーのような存在です。
※キャラクターは、RootBone位置が実行対象です。
| アイコン | 名前 | 説明 | |||||||||||||||||||||||||||||||||||||||||
| Random | 設定した確率(%)に応じて、 動きを始めたり止めたりします。 | ||||||||||||||||||||||||||||||||||||||||||
| Current Frame | 今のフレーム番号が、 指定した数値になった時に発動します。 | ||||||||||||||||||||||||||||||||||||||||||
| Polygon Zone | キャラクターが、指定したポリゴン範囲内に入った時に発動します。 | ||||||||||||||||||||||||||||||||||||||||||
| Painted Zone | 特定の色で塗られたゾーンにキャラクターが入った時に発動します。 | ||||||||||||||||||||||||||||||||||||||||||
| Texture | 2Dまたは3Dテクスチャの特定の色の場所にキャラクターがいる時に発動します。 | ||||||||||||||||||||||||||||||||||||||||||
| Distance | カメラや他のオブジェクトとの距離が、指定した長さより近い(または遠い)時に発動します。 | ||||||||||||||||||||||||||||||||||||||||||
| Driven Attribute | Maya上のオブジェクトの数値(回転や大きさなど)が、指定した値になった時に発動します。 | ||||||||||||||||||||||||||||||||||||||||||
| Expression | 自分でエクスプレッションを書いて制御します。 自由度が高いが難易度も高い。 | ||||||||||||||||||||||||||||||||||||||||||
| Behavior Time | 動き(ビヘイビア)が始まってから、 一定の時間が経過した時に停止させます。 | ||||||||||||||||||||||||||||||||||||||||||
| Motion Time | モーションが始まってから、一定の時間が経過した時に停止させます。 | ||||||||||||||||||||||||||||||||||||||||||
| Script Command | PythonやMELなどのプログラムを実行し、成功した時に発動します。(失敗したら実行せず。) | ||||||||||||||||||||||||||||||||||||||||||
| Physics Collision | 他のキャラクターや物理オブジェクトにぶつかった時に発動します。 | ||||||||||||||||||||||||||||||||||||||||||
| Fade | 徐々に始まったり、終わったりします。 | ||||||||||||||||||||||||||||||||||||||||||
| Boolean | やるかやらないか。 | ||||||||||||||||||||||||||||||||||||||||||
条件演算ノード(論理処理)
条件式を組み立てるためのノードです。
| ノード | 条件 | 参考例 | ||||||||||||||||||||||||||||||||||||||||||
| つないだ条件がすべて当てはまった時にだけ発動します。 | 例:敵が近くて、かつ体力が低いとき | |||||||||||||||||||||||||||||||||||||||||||
| つないだ条件のうち、どれか一つでも当てはまれば発動します。 | 例:敵が近い、または攻撃を受けたとき | |||||||||||||||||||||||||||||||||||||||||||
| つないだ条件のうち、「どちらか片方だけ」が当てはまった時に発動します。 | 両方当てはまる場合は発動しません | |||||||||||||||||||||||||||||||||||||||||||
| 条件を真逆にします。 | 例:「敵が近くにいる」につなぐと 「敵が近くにいない」ときに発動 | |||||||||||||||||||||||||||||||||||||||||||
| 前のトリガーが合計で何回(または何フレーム)当てはまったかをカウントし、指定回数に達したら発動します。 | 例:「特定の条件が3秒間続いたら行動開始」 | |||||||||||||||||||||||||||||||||||||||||||
まとめ
ゴーレムのノード設計は、
- Trigger = きっかけ
- Operator = 判断
- Behavior = 行動
この3つで構成されています。
仕組みを理解してしまえば、
「感覚的な配置」から
「意図した制御設計」へ変わります。


