UE4でAIを組み込んで各機能の取り扱いを考察する(所感)(その1:ビヘイビアの組み込み)
##目的
UE4ビヘイビア組み込みのクイックスタートからAIの機能を理解しよう
##環境
UnrealEngine 4.15.2
##クイックスタート組み込み
1.下記のドキュメントをもとにAIを実装しました。
ビヘイビアツリーのクイックスタートガイド
https://docs.unrealengine.com/latest/JPN/Engine/AI/BehaviorTrees/QuickStart/index.html
UE4のドキュメントはどれも詳しく書かれていますので、重宝します。
上記のガイドもブループリントも含めた手順が追加する変数と共に詳細に記載されているので、すぐに動かせるはずです。
動きません。。
何がよくなかったのでしょうか?
##クイックスタートのデバッグ
今回AIを組み込んだのはカメラを独立させてHPバーを組み込んだThirdPersonのサンプルでした。
敵キャラとして用意したキャラクターにAIを入れて自分に向かって移動してくるようにせってしました。
クイックスタートガイドでは基本アセット作成の2でキャラクターを1から作っていたため、手順通り、キャラクターを作って試してみましょう。
↓これです。ここは端折ってすでに作ったキャラクターを使いました。
配置してプレイしてみましょう。
こいつだけ動作してくれるでしょうか?
?
なぜか、このキャラクターに近づいてきました。
一度、新しく置いたキャラクターは消して、動作中のビヘイビアを見てみましょう。
↓この状態のビヘイビアツリーは?
ターゲットの設定が行われていないようです。
AgroCheckのブループリントをブレイクしてみましょう。
確かにここには来ていませんが、LineTrackByChannelまでは来ていました。
つまり、Hitしていない。
DrawDebugTipeを変更して機能を見てみても黄色いキャラを置いた時と自分とでは赤いラインが、Hitしていない様子がわかります。
LineTraceByChannel関数はどういった関数でしょうか?
UE4の公式ドキュメントによると、Start位置からEnd位置までをラインでつなぎ、Ignoreリスト以外のActorをTraceChannelに指定されたブロックチェックで引っ掛けるものです。
LineTraceByChannel | Unreal Engine Blueprint API Reference
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Collision/LineTraceByChannel/index.html
ブループリントにおけるレイキャスト(トレーシング)の使い方 | Unreal Engine
https://docs.unrealengine.com/latest/JPN/Gameplay/HowTo/UseRaycasts/Blueprints/index.html
アルゴリズムとしては、レイトレースして、カメラがぶつかるかどうかをチェックする機能でAIキャラクターが相手を認識しているかをチェックしているようです。
キャラクターがカメラをブロックしてなかったせいでした。
たしかに、カメラを独立化させたときにオーバーラップに変更しています。
これをブロックに直すと、
寄ってきました。。。(ちょっと怖い画面ですね)
カメラをコンポーネントとして入れるか、あるいは別の方法でチェックすればいいはずです。
LineTraceForObjectはレイトレースする際にIgnoreActorを除いた該当のオブジェクトにぶつかったときにリザルトが返ってくる関数です。
LineTraceForObjects | Unreal Engine Blueprint API Reference
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Collision/LineTraceForObjects/index.html
##次回
次回は組み込んだビヘイビアを元にデコレーターの役割と、ビヘイビアの使いどころを記載したいと思います。
##パッケージ
https://drive.google.com/file/d/1Cq69IhQlHp1lhSpcz8wPG23DCakxoRMe/view?usp=sharing
##参考Webページ
◇AI組み込み
https://docs.unrealengine.com/latest/JPN/Engine/AI/BehaviorTrees/QuickStart/index.html
https://docs.unrealengine.com/latest/JPN/Gameplay/HowTo/UseRaycasts/Blueprints/index.html
◇ブループリントAPI関数
https://docs.unrealengine.com/latest/INT/BlueprintAPI/index.html