Node Canvasが個人的にいまいち使いこなせない(解読)

Unityのほとんどの機能をビジュアルスクリプト、マウス操作で呼び出しノーコードでスクリプトを作成することができるアセットです。

似たようなアセットとして

PlayMaker Arbor Bolt があります。習得できてきたら比較検証もやりたいです。

 

予備知識

スクリプトの種類

  1. BehaviorTreeOwner(ビヘイビアツリー=流れるような一連の動作を組み立てる)
  2. FSM Owner(ステートマシン=状態に応じて1つ1つの行動を厳密に実行する)
  3. Dialogue Actor
  4. Dialogue Tree Controller
  5. Standalone Action List(Bonus)

ステートマシンでは、各ステート(状態)に応じた行動を制御するAiのようなイメージで、ビヘイビアツリーは一連の流れを前から順番に流れ作業のように実行していく処理といった違いでしょうか?3,4,5としてそれ以外のスクリプトがありましたが今回はよくわからないスクリプトだったので次回以降の解読で何者かわかれば追記します。

 

BehaviorTreeOwnerの使い方

ノードの作成方法

  1. BehaviorTreeOwnerスクリプトをアタッチ
  2. Bound(ヒエラルキー)かAsset(プロジェクト) を選択
  3. Canvasウインドウが出る
  4. ノードを追加(Canvasウインドウで右クリック)
  5. Compositesで指定した流れに応じて処理が進んでいく。

 

全ての要素を確認

  1. Actions
  2. Condition
  3. Composites
  4. Decorators
  5. SubGraph

 

全ての要素のリストを動画で撮影しました。何ができそうか妄想する用に使ってください。

NodeCanvasの使い方を解読したけどいまいちよく分からなかった。コマンド一覧を全部眺めるだけの動画。[Unityアセット] 素人ひとりゲーム制作・ノードキャンバス

 

ノードの組み方

  1. Composites、Decorators、Conditionで処理の流れや条件分岐を作成
  2. 処理の流れにActionsで実行したい処理を実装

Composites(左)とDecorators(右)
 

Actionsのリスト

実行できる処理がたくさんあるので、名前から機能を想像しながら実際にコードを組んでいって各種機能を覚えながら使いこなしていく形になるでしょう。数が多いので実践あるのみですね。

 

困った。シーケンサーの丸ポッチンが生成されない

どの参考動画を見てもシークエンサーのコネクションの部分の前後に新しい処理を紐付ける用の空白の丸ポッチンが表示されるはずなのですが、何故か生成されません。これでは処理の順番をシーケンサーに指定することができずに、全て同じタイミングでの処理になってしまいます。困った。

 



 

応用例・できること

  1. ナビメッシュを使用したオブジェクトの移動
  2. Movementアクションを使ったオブジェクトの移動や回転
  3. カメラのフェードイン・アウト
  4. 音を鳴らす
  5. ダイアログ
  6. Inputの入出力
  7. アニメーションの実行

各種用意されたアクションなどを組み合わせてスクリプトを作ることができることはわかったものの、実際のゲームとして使用する場合、どのように実用することができるのか?どんなことができるのか?いまいちピンとこないので、応用例というか実用でのできることをリストアップしてみた。

ビヘイビアツリーのような一連の流れの処理を作るに当たっては、GameCreatorでのビジュアルスクリプトでの製作に慣れているため、どうにも実用上でどうやってNodeCanvasを活用すればゲーム機能に応用できるのかが、使い方がよく分からず、使いこなせるまでには相当のアイディアと閃きが必要に感じます。とはいえ実際のゲームの応用例として動物が徘徊する動きのAiをビヘイビアツリーで実装する例を発見したので、分かる人には極めると、ここまでできるようです。個人的には使い所がよく分かりませんでしたが、極められる人には色々できる可能性がありそうですね。

 

極めると高度な動物のAi動作を作れるようです。

UNITY Basic Rabbit Life Cycle AI using Behavior Trees
https://www.youtube.com/watch?v=gdqc_6BJm_Q

 



 

FSM Ownerの使い方(Aボタンでオブジェクトを削除)

  1. 空のゲームオブジェクトを作る → FSM Ownerスクリプトをアタッチ
  2. Bound(ヒエラルキー)かAsset(プロジェクト) を選択
  3. 右クリックでアクションステートを追加×2
  4. スタートではないステートにアクションをアサイン(例ではオブジェクトの削除)
  5. スタートステートからAボタン(Fire1)入力でオブジェクトを削除するステートへのトランジションを作成
  6. デバッグプレイでAボタンを押すとオブジェクトが削除される。

基本的にはビヘイビアツリーと同じような流れで、各ステートへの遷移で処理を担当するような流れですね。ここも極めるといろんなことができる様ですが、初心者にいきなりは厳しいです。また理解が深まって来たらなにか記事にできたらいいなと思っています。

 

おまけ インストール先とインストール時のアップデート注意

※ Unity2021.3.6.f1にインストール


インストール先はNodeCanvasではなく ParadoxNotion です。


インストールするときにスクリプトアップデートの注意が出ました。これのせいでシークエンサーの丸ポッチンが表示されないのでしょうか?再インストールして真ん中のボタン「Yes,just for these files」を選択しましたがシークエンサーの丸ポッチン問題は解決しませんでした。

 

参考資料、チュートリアルYouTube

Getting Started with NodeCanvas for Unity
https://www.youtube.com/watch?v=3Cbz-dKbEeg&list=PLj6TswBSEcJulZpR9ayCsnScwVB_dg-3x

NodeCanvas Statemachine Tutorial
https://www.youtube.com/watch?v=gQfpn1P7ezE&list=PLj6TswBSEcJulZpR9ayCsnScwVB_dg-3x&index=2

 

 

コメント

タイトルとURLをコピーしました