SlideShare a Scribd company logo
1 of 143
Download to read offline
UE4勉強会 in 大阪
UE4でAIとビヘイビアツリーと-基
礎-
Slideshare用壁紙
Slideshare用壁紙
自己紹介
● Twitter: @com04
● ゲームプログラマー
● 作ったものとかは大体twitterモーメントに
○ https://twitter.com/i/moments/847072031048814594
○ https://twitter.com/i/moments/986364547098275840
自己紹介
● マーケットプレイスに出品しました
− ComMaterialTools - マテリアル検索の便利ツール
● https://www.unrealengine.com/marketplace/commaterialtools
● 講演したスライド
− マテリアル基礎・初級: https://www.slideshare.net/com044/ue4-80326829
− UE4でのチーム製作: https://www.slideshare.net/com044/4ue4-in-ue4
− アニメーション基礎: https://www.slideshare.net/com044/ue4-in-91056422
− もっとアニメーションBP: https://www.slideshare.net/com044/ue4-in-bp
− UE4 LODs for Optimization -Beginner-:
https://www.slideshare.net/com044/lods-for-optimization-beginner
− Volumetric Fogで空間を演出する!:
https://www.slideshare.net/com044/ue4-volumetric-fog
− UE4でTranslucencyやUnlitに影を落としたい!:
https://www.slideshare.net/com044/ue4translucencyunlit 5
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか version: UE4.21.1
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
はじめに
今回は主にビヘイビアツリーの基礎と、AIの作り始めの周
りをやっていきます。
はじめに
文字だとややこしいところもあるので、今回のスライド用に
テストしたプロジェクトを共有します。
● https://github.com/com04/UE4Osaka10_AI
○ プロジェクト内の説明についてはリンク先のページに書いてあ
ります。
はじめに
1. 「Clone or download」から、「Download ZIP」
2. ダウンロードした.zipを解凍する
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
UE4にあるAI系の機能
ビヘイビアツリー
http://api.unrealengine.com/JPN/Engine/AI/BehaviorTrees/index.html
● AIの処理を記述する機能
○ BPとはまた違ったノードベース
● 今日やります!
UE4にあるAI系の機能
Environment Query System(環境クエリ システム)
http://api.unrealengine.com/JPN/Engine/AI/EnvironmentQuerySystem/index.html
● 周囲の環境を調べる機能
○ 半径100m以内で敵の攻撃から隠れれる座標はどこ?とか
○ 敵に攻撃しつつ味方から離れない位置取りはどこ?とか
■ これらの結果をビヘイビアツリーで使用できる
● 初心者がEQSやってみた @goolee
○ https://www.slideshare.net/goolee1/eqs-107895547
■ 第7回UE4勉強会 in 大阪
UE4にあるAI系の機能
敵から壁で遮蔽される所を判別したり
敵
壁で敵の攻撃が当
たらない場所
UE4にあるAI系の機能
AI Perception
http://api.unrealengine.com/JPN/Engine/Components/AI/
● 視覚と聴覚を表現
○ 視野に入った、視野から出た。を検出できる
○ 敵が発した音を感知した。を検出できる
■ AI Perception用の音を発するノードとか有る
● 【UE4】AI Perception の紹介と使い方 @PavilionDV7
○ https://qiita.com/Dv7Pavilion/items/741402f4da609ec595a2
○ https://qiita.com/Dv7Pavilion/items/2984f2b03711492aa451
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
ビヘイビアツリー基礎 - ビヘイビアツリーとは?
Behavior Trees (ビヘイビアツリー) は、闇に潜む憎きゴキ
ブリから、シューティング ゲームの Bot に至るまで、撃つタ
イミングやヘルス値と弾薬を求めるタイミングが分かる AI
をアンリアル エンジン 4 で作るパワフルなツールです。
公式ドキュメントより
http://api.unrealengine.com/JPN/Engine/AI/BehaviorTrees/index.html
ビヘイビアツリー基礎 - ビヘイビアツリーとは?
BPとは違ったシステム
ビヘイビアツリー基礎 - ビヘイビアツリーとは?
こんな感じのノード構成
● 右クリックでノード出して繋
げていくのはBPと同じ
ビヘイビアツリー
ビヘイビアツリー基礎 - ビヘイビアツリーとは?
処理の流れをそのまま記述できる
相手の近くに移動するまでこ
こで処理する
移動終わったら次の処理に
移って攻撃処理する
ビヘイビアツリー
ビヘイビアツリー基礎 - ビヘイビアツリーとは?
実行中、もしくは一時停止中にビヘイビアツリーを開くと、
今走ってる処理フローが確認出来ます
ビヘイビアツリー
ビヘイビアツリー基礎 - ビヘイビアツリーとは?
ノードを右クリックでブレークポイントも使用できます
ビヘイビアツリー
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
ビヘイビアツリー基礎 - アセットの種類/BPの機能
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ビヘイビアツリー
AIの思考/行動を記述する
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ビヘイビアツリー
コンテンツブラウザから右クリック→「AI」→「ビヘイビアツ
リー」で作成
ビヘイビアツリー基礎 - アセットの種類/BPの機能
ブラックボード
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ブラックボード
変数を格納するアセット。ビヘイビアツリーに登録して使用
する
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ブラックボード
コンテンツブラウザから右クリック→「AI」→「ブラックボー
ド」で作成
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ブラックボード
左上のボタンから変数を追加します
ブラックボード
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ブラックボード
ブラックボード特有の機能として、変数の値を他のActorと
共有する事が出来ます
● 1つのActorがブラックボードに値を保存すると、別の
Actorのブラックボードでも値が書き換わっている
別々のActorで同じ値を共有できる
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ブラックボード
ブラックボードの変数で、「Instance Synced」にチェックを
入れると変数が共有されます
ブラックボード
ビヘイビアツリー基礎 - アセットの種類/BPの機能
タスク
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク
ビヘイビアツリーで使用する処理1つ
● ビヘイビアツリーで右クリックから出せます。
○ 紫のノードで表されます
○ 移動する、アニメーション再生する
SEを再生する。など
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク
自分でも作成する事が出来ます。
● コンテンツブラウザを右クリック
○ 「ブループリントクラス」作成→
○ 「BTTask_BlueprintBase」を選択して作成します。
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク
BPを開いて、関数をオーバーライドして処理を書きます
● Receive Tick AI
○ タスクが処理をしている間のTick処理
● Receive Execute AI
○ タスクに入った際に1度だけ呼ばれる
● Receive Abort AI
○ 処理中に中断された時に呼ばれる
ブループリント
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク
タスクは「Finish Execute」ノードで終了します
● ノードを呼ぶまではビヘイビアツリーは次のタスクへ遷
移しません
● 引数の「Success」はビヘイビアツリーに返す結果です
(後ほど)
○ 「Receive Execute AI」で攻撃処理を開始して、攻撃処理/
アニメーションが終わった時点で
「Finish Execute」ノードを呼ぶなど
ブループリント
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク
何もしない最小構成のノード
ビヘイビアツリー基礎 - アセットの種類/BPの機能
デコレーター
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 デコレーター
ビヘイビアツリーのノードにくっつけるフロー制御
● ノードを右クリック→
「デコレーター」を追加から
○ 青いノードで表されます
○ このノードに入るかどうか、ループ
処理、指定時間で処理中断させる等
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 デコレーター
自分でも作成する事が出来ます。
● コンテンツブラウザを右クリック
○ 「ブループリントクラス」作成→
○ 「BTDecorator_BlueprintBase」を選択して作成します。
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 デコレーター
BPを開いて、関数をオーバーライドして処理を書きます
● Perform Condition Check AI
○ くっついているビヘイビアツリーの
ノードの中に入るかを返す
● Receive Execution Start AI
○ ノード開始時に呼ばれる
● Receive Execution Finsih AI
○ ノード終了時に呼ばれる
ブループリント
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 デコレーター
「Perform Condition Check AI」
● Trueを返すと中入る
● Falseを返すと中を処理しない+そのノード自体もFalse
を返す
True
False
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
サービス
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 サービス
ビヘイビアツリーのノードにくっつける処理
● ノードを右クリック→
「サービス」を追加から
○ 緑のノードで表されます
○ このノード以下の処理をしている時は常に動作しています
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 サービス
自分でも作成する事が出来ます。
● コンテンツブラウザを右クリック
○ 「ブループリントクラス」作成→
○ 「BTService_BlueprintBase」を選択して作成します。
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 サービス
BPを開いて、関数をオーバーライドして処理を書きます
● Receive Tick AI
○ このサービスが動作している時に呼ばれるTick
● Receive Activation AI
○ このサービスを開始したタイミングで
呼ばれる
● Receive Deactivation AI
○ このサービスが終了するタイミングで
呼ばれる
ブループリント
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 サービス
ビヘイビアツリーでサービスを選択、詳細欄でパラメーター
を設定できます
● Interval
○ 「Receive Tick AI」が呼ばれる間隔
● Random Deviation
○ Intervalにランダムで加算する値。ランダムでタイミング変えた
い時に
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
タスク、デコレーター、サービスのBP共通
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク、デコレーター、サービスのBP共通
イベントノードの引数
● Owner Controller
○ ビヘイビアツリーを実行しているAI Controller。ブラックボード
はここから取得する
● Controlled Pawn
○ AI ControllerがくっついてるPawn。
○ 大体は動かしているキャラクター自体のActor。
ブループリント
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク、デコレーター、サービスのBP共通
各BPのパラメーターをビヘイビアツリーに出す方法
● 変数の詳細「インスタンス編集可能」にチェックを入れる
と、ビヘイビアツリーでパラメーターを設定できます
ブループリント ビヘイビアツリー
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
ビヘイビアツリーは上から順、左から順に処理されていき
ます
0
1
2 3
4
5
ビヘイビアツリー
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
ノードはCompositesノードで処理を分岐して、末端のタスク
で処理を行います
ビヘイビアツリー
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
Selector
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 Selector
Selector
● 繋がってるタスクがSuccessを返すと終了する
○ タスク内の「Finish Execute」ノードの引数
Successを返すとこ
のノードで終わり。
Successでなけれ
ば次のノードに
赤のタスクが
Successだとここは
来ない。
Successでなけれ
ば処理される
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 Selector
例1)
Success! 実行されない!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 Selector
例2)
Successしなかった! 実行される!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
Sequence
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 Sequence
Sequence
● 繋がってるタスクがSuccessを返すと次に行く
○ タスク内の「Finish Execute」ノードの引数
Successを返すと次
のノードに。
Successでなけれ
ば終了
赤のタスクが
Successだと処理さ
れる。
Successでなけれ
ば処理されない
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 Sequence
例1)
Success! 実行される!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 Sequence
例2)
実行されない!Successしなかった!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
組み合わせ事例
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例1)
Sequenceなので、赤枠の
ノードが全部Successだっ
た場合。Sequenceも
Successを返す
Success Success
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例1) 赤枠のSequenceが
Successを返したので、青
枠のSelectorは次を処理
せずに終わる。
Success!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例2)
Sequenceなので、赤枠の
ノードが一つでもSuccess
を返さなかった場合。
Sequenceも失敗を返す
Successじゃない!Success
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例2)
Successじゃない!
赤枠のSequenceが失敗を
返したので、青枠の
Selectorは次を処理して緑
枠に入る
実行する!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例3)
Selectorなので、赤枠のノー
ドが一つでもSuccessだった
場合。SelectorもSuccessを
返す
SuccessSuccessじゃない!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例3)
赤枠のSelectorが
Successを返したので、青
枠のSequenceは次を処理
する。
実行する!
Success!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例4)
Selectorなので、赤枠のノー
ドが全部Success返さな
かった場合。Selectorも失敗
を返す
Successじゃない! Successじゃない!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例4)
赤枠のSelectorが失敗を
返したので、青枠の
Sequenceは次を処理しな
い。
Successじゃない!
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
作っていきます
今回は動きを確認しやすい「トップダウン」プロジェクトで始
めます
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
作っていきます - 基本セット
アセットの基本セットを作っていきます
作っていきます - 基本セット
1.コンテンツブラウザを右クリックから「ブラックボード」を作
成
右クリック
作っていきます - 基本セット
「BB_Enemy」の名前で作りました。
変数を入れるアセットになります。
作っていきます - 基本セット
2.コンテンツブラウザを右クリックから「ビヘイビアツリー」を
作成
右クリック
作っていきます - 基本セット
「BT_Step01」の名前で作りました。
AIのロジックを記述するアセットになります。
作っていきます - 基本セット
ビヘイビアツリーを開いて、詳細欄に先程作成したブラック
ボードを設定します。
これで、このビヘイビアツリーでは「BB_Enemy」が使用さ
れます
ビヘイビアツリー
作っていきます - 基本セット
コンテンツブラウザを右クリックから「ブループリントクラス」
を作成
右クリック
作っていきます - 基本セット
「TopDownCharacter」を選択
※TopDownテンプレート以外の環境の場合は、Character
クラス等キャラクターを表示、動かすクラスを指定してくださ
い
作っていきます - 基本セット
「BP_Enemy」の名前で作りました。
キャラクター自体のBPアセットになります。
作っていきます - 基本セット
ブループリントを開いて、「Run Hehavior Tree」ノードで先
程のビヘイビアツリーを走らせます
ブループリント
作っていきます - 基本セット
BPをドラッグ&ドロップで投げ入れます
作っていきます - 基本セット
これで初期設定は終わりです。
後はAIのロジックを組んでいけば動きます
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
作っていきます - AIを作る
実装テストする際は一つずつやっていきます
作っていきます - AIを作る
Case 1
プレイヤーに近づいて攻撃する
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
Step 1
目標点に移動する
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
目標点の座標を入れる変数をブラックボードに用意しま
す。
新規キーを選択して、追加したい型を指定
します。
ブラックボード
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
目標点、座標を指定しますのでVector型で用意します
ブラックボード
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
ビヘイビアツリーのサービスを作ります。
「ブループリントクラス」作成→
「BTService_BlueprintBase」を選択して作成します。
「BTS_TargetLocation」の名前で作りました。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
作成したBPを開いて、関数欄から「オーバーライド」→
「Receive Tick AI」でイベントを追加します。
後はブラックボードの先程追加した変数に、移動させたい
座標を設定します
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
ビヘイビアツリーで右のように繋ぎます。
「ルート」から直接タスクに繋げないので、
「Selector」を経由して「Move To」タスクに繋ぎ
ます
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
「Move To」タスクの詳細欄に、先程ブラックボードで作成し
た目標点の座標変数を設定します
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
Move Toタスク
● 指定したVector座標、Objectの位置へ移動する
http://api.unrealengine.com/JPN/Engine/AI/BehaviorTrees/NodeReference/Task
s/index.html#moveto
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
「Selector」を右クリックして「サービスを追加」→先程作成
したBP「BTS_TargetLocation」を選択します
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
これでこの「Selector」以下の処理をしている際は
「BTS_TargetLocation」サービスが動作するようになりま
す。
=先程のBPで組んだ移動させたい座標設定
が行われます
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
プレイすると動き出すようになります。
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
Step 2
プレイヤーに向かっていく
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
作成したサービス「BTS_TargetLocation」を開いて編集し
ます。
座標をPlayerCharacterの座標で指定します
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
ビヘイビアツリーのサービスで動作しているので、
「Selector」以下の処理をしている際は、
常にプレイヤーの座標から取得しています
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
これだけでプレイヤーに向かっていくようになります。
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
※動きがカクカクする際はビヘイビアツリーの「Move To」タス
クの詳細欄「Observed Blackboard Value Tolerance」に
チェックを入れて有効にしてみてください
● 【UE4】AIMoveToノードのゴールに指定する型による動作の違いに
ついて - @Dv7Pavilion
○ https://qiita.com/Dv7Pavilion/items/1ab2f715e9d19e5d9d05#observed-bla
ckboard-value-tolerance
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
Step 3
プレイヤーに近づいて攻撃する
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
攻撃するビヘイビアツリーのタスクを作成します。
「ブループリントクラス」作成→「BTTask_BlueprintBase」
を選択して作成します。
「BTT_Attack」の名前で作りました。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
作成したBPを開いて、関数欄から「オーバーライド」→
「Receive Execute AI」でイベントを追加します。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
攻撃処理を追加します。
今回は本題では無いのでデバッグ表示で代用します。
攻撃処理が終わった後は「Finish Execute」ノードでタスク
を終わらせます。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
プレイヤーとの距離を判断するビヘイビアツリーのデコレー
ターを作成します。
「ブループリントクラス」作成→
「BTDecorator_BlueprintBase」を選択して作成します。
「BTD_LengthCheck」の名前で作りました。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
作成したBPを開いて、関数欄から「オーバーライド」→
「Perform Condition Check AI」でイベントを追加します。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
距離チェック処理を追加します。
これ以下の距離は攻撃を行います。
自身のActorとプレイヤーのXY平面での距離を測ります。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
ビヘイビアツリーを右のよう
にします。
● 近いと攻撃(赤枠)
● でなければ近づく(緑
枠)
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
これで近づくまで追ってきて、一定距離以下になると攻撃
するビヘイビアツリーになりました
作っていきます - AIを作る
Case 2
プレイヤーから離れて射撃攻撃する
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
Step 4
プレイヤーから離れて攻撃する
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
プレイヤーとの距離を判断するビヘイビアツリーのデコレー
ターを作成します。
「ブループリントクラス」作成→
「BTDecorator_BlueprintBase」を選択して作成します。
「BTD_LengthCheck」の名前で作りました。
ブループリント
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
距離チェック処理を追加します。
これ以下の距離なら、プレイヤーから離れます。
自身のActorとプレイヤーのXY平面での距離を測ります。
ブループリント
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
逃げる位置用ビヘイビアツリーのサービスを作ります。
「ブループリントクラス」作成→「BTService_BlueprintBase」
を選択して作成します。
「BTS_TargetLeaveLocation」の名前で作りました。
ブループリント
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
とりあえず背景のコリジョンに関係なく、プレイヤーから逆
方向を目標点にしています
ブループリント
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
射撃攻撃するビヘイビアツリーのタスクを作成します。
「ブループリントクラス」作成→「BTTask_BlueprintBase」を
選択して作成します。
「BTT_AttackShot」の名前で作りました。
ブループリント
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
攻撃処理を追加します。
今回は本題では無いのでデバッグ表示で代用します。
攻撃処理が終わった後は「Finish Execute」ノードでタスク
を終わらせます。
ブループリント
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
ビヘイビアツリーを右のよう
にします。
● 近いと離れる
(赤枠)
● でなければ攻撃
(緑枠)
ビヘイビアツリー
作っていきます - AIを作る
Case 3
両方のパターンを配置する
作っていきます - AIを作る
 Case 3 両方のパターンを配置する
Step 5
それぞれ出現させる
作っていきます - AIを作る
 Case 3 両方のパターンを配置する
始めに作った「BP_Enemy」の「Run Behavior Tree」の
「BT Asset」を変数にします
ブループリント
作っていきます - AIを作る
 Case 3 両方のパターンを配置する
作った変数の「インスタンス編集」をONにします
ブループリント
作っていきます - AIを作る
 Case 3 両方のパターンを配置する
これで3D View上でビヘイビアツリーを直接指定できます
作っていきます - AIを作る
 Case 3 両方のパターンを配置する
「BP_Enemy」を2体配置してそれぞれ、別々のビヘイビアツ
リーを設定すると挙動の違う2体が動きます。
作っていきます - AIを作る
 Case 3 両方のパターンを配置する
近接してくる敵と離れて射撃を行
う敵が動き出します
作っていきます - AIを作る
ここから
作っていきます - AIを作る
 ここから
● 近いと近接攻撃
● 届かなければ離れて
遠距離攻撃
ビヘイビアツリー
作っていきます - AIを作る
 ここから
他には
● プレイヤーを察知しているか
○ していなければ待機でその辺ふらつくとか
● プレイヤーに猶予を与える為に待機する
○ ひたすら攻撃しているとプレイヤーが何も出来ない
● プレイヤーの攻撃を避ける
○ 距離を取る、ガードする
などなど……
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
ほか
注意点
ほか - 注意点
● 「MoveTo」タスク等で動かす場合は、BP側では
MovementComponent系が無いと動かない場合があり
ます
○ 今回はBPを作る時に
「TopDownCharacter」で作りました。
○ 他に作る時は「Character」から
作ってみると大丈夫です
■ 自作で上手く動かない時は試しに
Characterで作ってみるとか
ほか - 注意点
● 「MoveTo」タスク等で動かす場合は、歩ける地面にナ
ビゲーションメッシュが配置されている必要があります
○ 「Nav Mesh Bounds Volume」を配置して地面を囲う
○ 参考
■ 2.Nav Mesh Bounds ボリュームの作成
● https://api.unrealengine.com/JPN/Engine/AI/BehaviorTrees/QuickStar
t/2/index.html
○ ビヘイビアツリーが正常に走ってるのに動かない時は大抵コ
レ
ほか - 注意点
Viewの「表示」から「ナビゲーション」で可視化。
緑のエリアがAIが歩ける
ほか
参考
ほか - 参考
参考
● [UE4] ビヘイビアツリー(BehaviorTree)の使い方 入門編
@historia
○ http://historia.co.jp/%3Fp%3D1102
● [UE4] BehaviorTree: Task、Service、Decoratorのイベント
@historia
○ http://historia.co.jp/archives/10221/
● はじめてのAI~ 愛のあるAIを作ろう @中村 匡彦
○ https://www.slideshare.net/masahikonakamura50/ai-ai-62023284
ほか - 参考
もう一歩先に
● スクウェア・エニックスにおける UNREAL ENGINE 4 を用いた人
工知能技術の開発事例
○ https://www.youtube.com/watch?v=BV2GTGbSjq8
● 【UE4】味方AIの作り方!AIとは何かを学びながら、ブループリン
トで味方キャラクターを実装しよう @ろっさむ
○ https://qiita.com/4_mio_11/items/9e8af2ce82ee2a7625b5
●
以上!

More Related Content

What's hot

What's hot (20)

UE4で作成するUIと最適化手法
UE4で作成するUIと最適化手法UE4で作成するUIと最適化手法
UE4で作成するUIと最適化手法
 
UE4 Volumetric Fogで 空間を演出する!
UE4 Volumetric Fogで 空間を演出する!UE4 Volumetric Fogで 空間を演出する!
UE4 Volumetric Fogで 空間を演出する!
 
Unreal Engineを使用した商用タイトルで のノンフォトリアルレンダリング(NPR)事例
Unreal Engineを使用した商用タイトルで のノンフォトリアルレンダリング(NPR)事例Unreal Engineを使用した商用タイトルで のノンフォトリアルレンダリング(NPR)事例
Unreal Engineを使用した商用タイトルで のノンフォトリアルレンダリング(NPR)事例
 
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
 
UE4におけるレベル制作事例
UE4におけるレベル制作事例  UE4におけるレベル制作事例
UE4におけるレベル制作事例
 
UE4とUnrealC++について
UE4とUnrealC++についてUE4とUnrealC++について
UE4とUnrealC++について
 
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
 
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
 
猫でも分かるUMG
猫でも分かるUMG猫でも分かるUMG
猫でも分かるUMG
 
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
 
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
 
UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!
 
非同期ロード画面 Asynchronous Loading Screen
非同期ロード画面 Asynchronous Loading Screen非同期ロード画面 Asynchronous Loading Screen
非同期ロード画面 Asynchronous Loading Screen
 
UE4におけるエフェクトの基本戦略事例 後半
UE4におけるエフェクトの基本戦略事例  後半UE4におけるエフェクトの基本戦略事例  後半
UE4におけるエフェクトの基本戦略事例 後半
 
UE4 ビヘイビアツリー入門
UE4 ビヘイビアツリー入門UE4 ビヘイビアツリー入門
UE4 ビヘイビアツリー入門
 
猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り
 
UE4におけるLoadingとGCのProfilingと最適化手法
UE4におけるLoadingとGCのProfilingと最適化手法UE4におけるLoadingとGCのProfilingと最適化手法
UE4におけるLoadingとGCのProfilingと最適化手法
 
UE4を使った映像制作 (UE4 Character Art Dive Online)
UE4を使った映像制作 (UE4 Character Art Dive Online)UE4を使った映像制作 (UE4 Character Art Dive Online)
UE4を使った映像制作 (UE4 Character Art Dive Online)
 
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級第2回UE4勉強会 in 大阪 - マテリアル基礎・初級
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級
 

Similar to UE4でAIとビヘイビアツリーと-基礎-

Similar to UE4でAIとビヘイビアツリーと-基礎- (20)

UE4ぷちコンの勧め
UE4ぷちコンの勧めUE4ぷちコンの勧め
UE4ぷちコンの勧め
 
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
 
正しいものを正しくつくるへ至る道
正しいものを正しくつくるへ至る道正しいものを正しくつくるへ至る道
正しいものを正しくつくるへ至る道
 
Room metro Tokyo #3 発表資料です。
Room metro Tokyo #3 発表資料です。Room metro Tokyo #3 発表資料です。
Room metro Tokyo #3 発表資料です。
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
 
プロダクト開発を繋げる
プロダクト開発を繋げるプロダクト開発を繋げる
プロダクト開発を繋げる
 
EC-CUBEユーザカンファレンス2016
EC-CUBEユーザカンファレンス2016EC-CUBEユーザカンファレンス2016
EC-CUBEユーザカンファレンス2016
 
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
 
concrete5 テーマ作成ハンズオン (Ver5.6 まで)
concrete5 テーマ作成ハンズオン (Ver5.6 まで)concrete5 テーマ作成ハンズオン (Ver5.6 まで)
concrete5 テーマ作成ハンズオン (Ver5.6 まで)
 
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipelineTerraform with Bitbucket pipeline
Terraform with Bitbucket pipeline
 
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜
 
Build 2022 / Uno Platform
Build 2022 / Uno PlatformBuild 2022 / Uno Platform
Build 2022 / Uno Platform
 
CSRを自動生成する!
CSRを自動生成する!CSRを自動生成する!
CSRを自動生成する!
 
IGDA日本 GDC2015報告会 「ゲームから社会へ、社会からゲームへ」
IGDA日本 GDC2015報告会 「ゲームから社会へ、社会からゲームへ」IGDA日本 GDC2015報告会 「ゲームから社会へ、社会からゲームへ」
IGDA日本 GDC2015報告会 「ゲームから社会へ、社会からゲームへ」
 
UE4勉強会 in 大阪 - アニメーション基礎
UE4勉強会 in 大阪 - アニメーション基礎UE4勉強会 in 大阪 - アニメーション基礎
UE4勉強会 in 大阪 - アニメーション基礎
 
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
 
WatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことWatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったこと
 
T119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターンT119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターン
 
20210824 Pico session at CEDEC2021(旧)
20210824 Pico session at CEDEC2021(旧)20210824 Pico session at CEDEC2021(旧)
20210824 Pico session at CEDEC2021(旧)
 

More from com044

More from com044 (18)

2019年03月 UE4界隈ニュース
2019年03月 UE4界隈ニュース 2019年03月 UE4界隈ニュース
2019年03月 UE4界隈ニュース
 
AI基礎
AI基礎AI基礎
AI基礎
 
2019年01月 UE4界隈ニュース
2019年01月 UE4界隈ニュース2019年01月 UE4界隈ニュース
2019年01月 UE4界隈ニュース
 
2018年11月 UE4界隈ニュース
2018年11月 UE4界隈ニュース2018年11月 UE4界隈ニュース
2018年11月 UE4界隈ニュース
 
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース
 
UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-
 
UE4 LODs for Optimization -Beginner-
UE4 LODs for Optimization -Beginner-UE4 LODs for Optimization -Beginner-
UE4 LODs for Optimization -Beginner-
 
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース
 
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース
 
UE4勉強会 in 大阪 - もっとアニメーションBP
UE4勉強会 in 大阪 - もっとアニメーションBPUE4勉強会 in 大阪 - もっとアニメーションBP
UE4勉強会 in 大阪 - もっとアニメーションBP
 
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース
 
第4回UE4勉強会 in 大阪 UE4でのチーム製作
第4回UE4勉強会 in 大阪   UE4でのチーム製作第4回UE4勉強会 in 大阪   UE4でのチーム製作
第4回UE4勉強会 in 大阪 UE4でのチーム製作
 
第4回UE4勉強会 in 大阪 201801 UE4界隈ニュース
第4回UE4勉強会 in 大阪   201801 UE4界隈ニュース第4回UE4勉強会 in 大阪   201801 UE4界隈ニュース
第4回UE4勉強会 in 大阪 201801 UE4界隈ニュース
 
第3回ue4勉強会 in 大阪 201711 ue4界隈ニュース
第3回ue4勉強会 in 大阪   201711 ue4界隈ニュース第3回ue4勉強会 in 大阪   201711 ue4界隈ニュース
第3回ue4勉強会 in 大阪 201711 ue4界隈ニュース
 
第2回UE4勉強会 in 大阪 - 201709 ue4界隈ニュース
第2回UE4勉強会 in 大阪 -  201709 ue4界隈ニュース第2回UE4勉強会 in 大阪 -  201709 ue4界隈ニュース
第2回UE4勉強会 in 大阪 - 201709 ue4界隈ニュース
 
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
 
第1回UE4勉強会 in 大阪 - UE4界隈ニュース
第1回UE4勉強会 in 大阪 - UE4界隈ニュース第1回UE4勉強会 in 大阪 - UE4界隈ニュース
第1回UE4勉強会 in 大阪 - UE4界隈ニュース
 
UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた
UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみたUE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた
UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた
 

UE4でAIとビヘイビアツリーと-基礎-