目的地までナビゲートしてくれる道しるべを作る

目的地までナビゲートしてくれる道しるべ的なものを作ったので書き留めておきます。

UE4のナビメッシュとAIコントローラーを使うと、使ったことがある人なら分かると思うけど、曲がり角でカクッとした挙動になってしまうのでなんだか気持ち悪い。

そこで、スムーズに曲がってくれるものを、スプラインを利用して作りました。

 

​完成形はこんな感じ↓

①下準備

レベルにNavimeshVolumeBoundを追加し、ナビゲーション情報を取得できるようにしておいてください。

②スプラインを作成する​

PlayerPawnにスプラインコンポーネントを追加します。

ここではNavigateSplineと名付けておきました。

そしたら、以下のノードをTickイベント下に追加します。

見切れててわかりづらいですが、「Find Path to Location...」 ノードのPathStartにはプレイヤーの現在位置を、PathEndには目的地を入れます。

​このノードでNavigation情報を元に、目的地までのパスを取得できます。

​そしたら、ReturnValueからPathPointsを取得し「Set Spline Points」ノードのPointsに突っ込みます。これで、取得したパスにそってスプラインが出来ます。

​③スプラインに沿って移動するアクターを作成

新規にBPをアクターで作成。ここでは自作の矢印メッシュを適用してます。

そしたらSplineDistance変数をfloatで作成し、Tickごとに加算します。

この変数でスプライン上の距離を指定し、そのポイントにおけるワ-ルドポジションを取得します。

ここではDelta Secondsに700を掛けていますが、1秒ごとに700ユニット=7m進む計算になります。

同じくTick下に以下のノードを追加します。

PlayerPawnからスプラインコンポーネントを参照し、「Get Location at Distance Along Spline」と「Get Rotation at Distance Along Spline」に先ほどのDistance変数を入れ、スプライン上の指定距離における位置と回転方向を取得します。

(ここではPlayerPawnはPlayerActor変数に格納されています、適当に参照してください)

​最後に「Set Actor Location And Rotation」ノードに位置と回転情報を入れます。

ここまでで、矢印アクターをスポーンすると矢印が一つだけパスに沿って綺麗に移動してくれると思います。

このままでは寂しいので、動画のように一定間隔でスポーンするようにする等、カスタムして使ってみて下さい。

© 2019 Kazuki Shiroma