1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UE4でAIを組み込んで各機能の取り扱いを考察する(その1:ビヘイビアの組み込み)

Last updated at Posted at 2017-05-19

UE4でAIを組み込んで各機能の取り扱いを考察する(所感)(その1:ビヘイビアの組み込み)

##目的
UE4ビヘイビア組み込みのクイックスタートからAIの機能を理解しよう

##環境
UnrealEngine 4.15.2

##クイックスタート組み込み
1.下記のドキュメントをもとにAIを実装しました。
ビヘイビアツリーのクイックスタートガイド
https://docs.unrealengine.com/latest/JPN/Engine/AI/BehaviorTrees/QuickStart/index.html

UE4のドキュメントはどれも詳しく書かれていますので、重宝します。
上記のガイドもブループリントも含めた手順が追加する変数と共に詳細に記載されているので、すぐに動かせるはずです。

2.組み込んでプレイした結果
SnapCrab_NoName_2017-5-20_6-55-26_No-00.jpg

動きません。。
何がよくなかったのでしょうか?

##クイックスタートのデバッグ
今回AIを組み込んだのはカメラを独立させてHPバーを組み込んだThirdPersonのサンプルでした。

敵キャラとして用意したキャラクターにAIを入れて自分に向かって移動してくるようにせってしました。

クイックスタートガイドでは基本アセット作成の2でキャラクターを1から作っていたため、手順通り、キャラクターを作って試してみましょう。

↓これです。ここは端折ってすでに作ったキャラクターを使いました。
SnapCrab_NoName_2017-5-20_7-47-40_No-00.jpg

もろもろ設定して、わかりやすく黄色くしました。
SnapCrab_NoName_2017-5-20_6-54-35_No-00.jpg

配置してプレイしてみましょう。
こいつだけ動作してくれるでしょうか?
SnapCrab_ThirdP - アンリアルエディタ_2017-5-20_6-54-58_No-00.png


なぜか、このキャラクターに近づいてきました。

一度、新しく置いたキャラクターは消して、動作中のビヘイビアを見てみましょう。
SnapCrab_NoName_2017-5-20_6-55-26_No-00.jpg
↓この状態のビヘイビアツリーは?
SnapCrab_NoName_2017-5-19_8-43-7_No-00.jpg

ターゲットの設定が行われていないようです。
AgroCheckのブループリントをブレイクしてみましょう。
SnapCrab_NoName_2017-5-19_8-42-20_No-00.jpg

確かにここには来ていませんが、LineTrackByChannelまでは来ていました。

SnapCrab_NoName_2017-5-19_8-42-47_No-00.jpg

つまり、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キャラクターが相手を認識しているかをチェックしているようです。

!おっと
SnapCrab_NoName_2017-5-20_8-33-51_No-00.jpg

キャラクターがカメラをブロックしてなかったせいでした。
たしかに、カメラを独立化させたときにオーバーラップに変更しています。
これをブロックに直すと、
SnapCrab_NoName_2017-5-20_7-1-6_No-00.jpg

寄ってきました。。。(ちょっと怖い画面ですね)

カメラをコンポーネントとして入れるか、あるいは別の方法でチェックすればいいはずです。

別方法のチェックを試します。
SnapCrab_NoName_2017-5-20_8-38-25_No-00.jpg

LineTraceForObjectはレイトレースする際にIgnoreActorを除いた該当のオブジェクトにぶつかったときにリザルトが返ってくる関数です。

LineTraceForObjects | Unreal Engine Blueprint API Reference
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Collision/LineTraceForObjects/index.html

結果
SnapCrab_NoName_2017-5-19_8-45-56_No-00.jpg

##次回
次回は組み込んだビヘイビアを元にデコレーターの役割と、ビヘイビアの使いどころを記載したいと思います。

##パッケージ
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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?