Unityに触ってみる(6)【Behaviour Treeを実装する】

キャラクターを自分で動かせるようになったのはいいんですけどコンピュータが動かないんじゃ鬼ごっこになりません。

というわけでコンピュータのAIを実装しようと思います。

といってもまさかディープラーニングがーとか人工知能がーとかをやりたいわけでもないのでもっと対戦ゲームっぽいものを探していたらBehaviourTreeなるAIがあるらしく、面白そうだったのでそれを使ってみることにしました。

ただ、BehaviourTreeを作るためのassetが有料だったため自分で実装することになりました。

BehaviourTreeってなんぞ?

大体ここに書いてあります(環境によってはスライドを見るためにブラウザのスクリプト実行を許可させてあげないといけないかもしれません)

幻塔戦記グリフォンの AI で使っている Behaviour Tree | Aiming 開発者ブログ

とりあえず

・子を持たず、とりあえずアクションするActionNode

・子を一つ持ち、指定された条件が真のときに子を実行するDecoratorNode

・子を複数持ち、成功するまで子を実行するSelectorNode

・子を複数持ち、失敗するまで子を実行するSequencerNode

の四種類が存在しているようです。

出来上がったものがこちらになります

そしてそれを利用したものがこちらになります

そういえばすっかりお見せするのを忘れていたgithubもこの際だからリンクを張っておきます

github.com

読みずらい…

実装としてはそれっぽいインターフェースを作っておいてラムダ式を使って実際の動作を決めてる感じです。

挿入のために一意に識別できるkeyが必要だと思ったのでstring型でKeyを持っています。これにはルートノードを"/"としてファイルシステムみたいな感じで名前をつけておけばいいかなーって思ってます。ただし一意であることは保証してません。

SequencerNodeは必要なさそうなので作りませんでした

これでおおむね出来上がったのでここを参考に作ったものを公開してみました

qiita.com

↓これです

Unity WebGL Player | Tag

よかったら遊んであげてください