Unity+UnrealEngine4+Blog.

UnityやUnrealEngine4とかについて学習したことを書いてます

UE4 Timelineをループさせる小技/Timeline使用の際に動的にActorの現在座標を使用する

今回は下のような内容の記事です。

 

 1.Tickノードを使わず、Timelineをループさせる小技を使い

 2.アクターの現在座標を取得・ターゲット座標までスピードを指定して移動させる

3.移動させたらTimelineのループを抜けてイベント終了

 

引数が取れない?Timelineで動的なActorの座標を取得して移動させるためにはどうすればいいのか悩んだときに思いつきました!

AddActorWorldOffset+Lerp処理に似た感じです。

 

 まずは下のように空のシーンにCubeを配置します。
Locationは適当です。このCubeのX軸を変更して動かしていきます。

f:id:nabesi777:20200219202932p:plain

f:id:nabesi777:20200219202957p:plain

 

下はTimelineを使用して、このCubeのX座標を-150へ移動させる普通の組み方です。

f:id:nabesi777:20200219203120p:plain

f:id:nabesi777:20200219203208p:plain

 

3秒かけてCubeのX座標が-150へ移動するイベントができました。

これで目的は達成できるのですが、問題点は(Timelineのキーに座標を打ち込むため)Cubeの座標を予め把握しておかなければいけない点です。

 例えば常に移動しているActorで、このイベント開始時に座標を把握することができない場合は、このやり方では難しいです。

 

そこで下のようにノードを組んで問題点が解決しました。

カスタムイベントのInputへSpeedとTarget座標をいれ(今回はFloat型)、まずはTimelineノードへつなぎます。このTimelineの出力は何もなく、ただ時間だけ使用してます。次にActorの座標をgetし、MoveSpeed分を足してSetLocationします。

これがひとつの流れで、TimelineがFinishした段階でTarget座標まで移動できていなければもう一度これを繰り返すという流れです。

f:id:nabesi777:20200219203838p:plain

出力はなにもない↓

f:id:nabesi777:20200219203856p:plain

 

TimelineのLengthは0.1ですが、移動スピードが速く、Target座標を大幅に通り過ぎる場合はもっと小さい値へすればいいです。

 

[定期]

独学で手探りでやってるので変な内容があったらすみません。