ヒマがあるならゲームつくってね

こんなとこ見てないでゲームをつくろう

UE4:AIControllerからPawnにNavMesh移動の移動情報を通知している流れ

 Characterクラスではなく、PawnをNaviMesh移動させたかったので、C++のソースを読んでAIControllerからPawnには、どんな情報を通知して、NaviMesh移動しているのか調べました。
 AIController(厳密には、ビヘビアツリーのMoveToのようなTaskノード)から、Pawnの中のMovementComponentのVelocityベクトルに、目的地まで移動するための移動ベクトルが設定されているみたいです。
PawnにはMovementComponentがないので、追加する必要はあります。
 例えば、C++で、カスタムPawnクラスにPawnMovementComponentを追加して、BPからVelocityを取得して、そのベクトルをもとに、移動を行えば、NaviMeshによる移動がPawnクラスでもできるみたいです。
 BPからは、PawnMovementComponentは追加できないので、C++で追加する必要があります。

	Movement = CreateDefaultSubobject<UPawnMovementComponent>(TEXT("Movement"));

f:id:siu3:20150527210225p:plain

 実際のところは、特別な動きのPawnを作ってNaviMesh移動する必要がない限りは、NaviMeshによる移動は、AIControllerとCharacterクラスを利用すれば、C++のコードも書かずに簡単に利用できるので、そちらを使ったほうがいいです。
ビヘイビアツリーのクイックスタートガイド | Unreal Engine