yyyaaa
(yyyaaa)
1
やりたいことは配列に入っているオブジェクトをインデックス順に一定間隔で同じ処理をさせたいと思っています。
今やろうとしているのはオブジェクトのロケーションのワールドZ値/ローテーションのローカルZ値/スケールの値の全てを変えたものを、配列の中身順に一定間隔で動作させるという事です。
以下のLBP2のように作ってみましたがうまく動作せず(ラストインデックスまでは処理が通っているが、最後のオブジェクトしかちゃんと機能していない)、解決方法が分からないので、わかる方がいらっしゃいましたらお力添えいただけますと幸いです。
レベルブループリントの中身
ArrayLoopの中身(ヒストリアさんのブログ参照しました)
ChangeTransformの中身
※追記
色々やってみたところ、timelineに2つ問題がありそうです。
1.ループ時に前の秒数が残っている
2.timelineの秒数が1秒だとして、ループのfirstindexからlastindexまで1秒しか動かない
理想としては、ループしたらループ前とは別のタイムラインとして機能してほしいのですが、何か解決方法はございますでしょうか。
T_Sumisaki
(T_Sumisaki)
2
Timelineノードはそれ自体が1つのComponentの扱いですので、別々に扱いたければ複数のTimelineノードを作成する必要があります
また、画像1枚目のような構成だと、Updateに流れた次のフレームにはTimelineで動かすTargetが次の要素に変わってしまうため、ループが止まる(最後の要素が選択される)まで毎フレーム要素が入れ替わることになります
最後の要素だけ思い通りに動く、というのはそういうことです
1つの要素に対する動作が終わったあと、次の要素に移ればよいのであれば、ArrayLoopのLoopBodyはPlayFromStartにつなぎ、TimelineのFinishにLoopEventの呼び出しをつなぐとうまく動作すると思います
全部少しずつずらしつつ同時に動かしたい場合は、Timelineノードは共有できませんので、別の方法を考える必要があります
一例としては、動作自体(Timelineノード含む)は動かすActor側に実装し、Loopでその開始イベントのみ呼ぶ方法が考えられます
yyyaaa
(yyyaaa)
3
ご回答いただきありがとうございます。やはりTimelineの使い方が間違っていましたか・・・。Timelineの時間を何度か調整したいのとオブジェクトが大量にあるので、なるべく簡略化して使いたかったのですが、アクターに実装しつつ、トリガーボックスで開始させるようにしてみます。