UE4ゲーム制作入門九日目

一人UE4ゲーム制作入門アドベントカレンダー九日目です。

今日はAIを作ります。せっかくプレイヤーの死亡アニメーションを作ったのに自殺しかできないのは哀しいですからね。

クマAI作成開始


まずはAIを作るために必要なビヘイビアツリーを用意します。
ビヘイビアツリーは、タスクを組み合わせて、実際のAIの処理を実装するものです。
名前はBT_Bearです。
ビヘイビアツリー作成

今の動きを移植してみる


まずは自分に向かってくる敵を作ってみましょう。まずはBT_Bearを開きます。
①開いたら、ブラックボートを作ります。
ブラックボードは、タスク間、もしくは同じブラックボードを持っているアクター間で同じ変数を共有するためのものです。
名前はBB_Bearです。
②ビヘイビアツリーに戻って、先程のブラックボードをセットします。
セットできたら、ROOTの下側部分の濃い黒い部分からドラッグをします。するとコンポジットを選ぶことができます。
コンポジットは、タスクの流れを制御するためのノードです。
今回はSequenceを選びましょう。
③プレイヤーに向かって移動するという命令を作ります。NewTaskから新しくタスクを作ります。
すると、作られたタスクのウィンドウが自動で開くので、中身を実装・・・する前に、名前をコンテンツブラウザから変更します。
BTask_MoveToPlayerという名前にしましょう。
ビヘイビアツリーの中身

改めて、タスクの中身を実装していきます。まず、Event Receive ExecuteAIを配置します。このノードはこのタスクがAIで使われている際のスタートポイントになります。
次に変数を作りましょう。名前はTargetです。
型はBlackboadKeySelectorというブラックボードの変数を参照することのできる変数です。Publicにしておくことで、ビヘイビアツリー上で使用するブラックボードの変数をBlackboadKeySelectorに割り当てることができます。
使用方法は赤丸で囲ってあるとおり、getして、ノードを伸ばすとGet(Set)Blackboad value * みたいなノードがいっぱい出てくると思います。今回はActorの情報を参照したいのでGet Blackboad Value as Actor を呼び出します。
SimpleMoveToActorで移動させ、FinishExecuteをtrueで返して終わります。Trueを返さない場合、AIがうまく動かずに止まります。

実はすでに用意されているタスクのMoveToでもよかったりします。
タスクの中身

ブラックボードに変数を設定しましょう。NewKeyからObject型の変数を作ります。名前はTargetです。
その次に、右側の詳細画面でKeyTypeが小さくなっているのですべて開きます。するとBaseClassを選べるので、Actorを選びます。
Blackboadの中身

あとはAIコントローラでビヘイビアツリーとブラックボードを走らせれば、AIが動きます。
その際、もともとテスト用に使っていたMoveToActorはTickから外します。この画像では残っていますが、消しても全然構いません。
AIコントローラ

やってみた





うまく動かない場合はNavMeshVolumeがうまく動いてない可能性があります。きちんとステージ全体が範囲内に入っているか、Pボタンをエディタ上で押して緑色になるかどうかを確認し、ビルドを通して再度Pボタンを押して確認してみてください。

明日はこのAIをよりゲーム向きに改良します。
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

shiratori00

Author:shiratori00
フリーでソフトウェア開発者してます

最新記事
最新コメント
月別アーカイブ
カテゴリ
Twitter on FC2
カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR