ゲーム作りが大好きな人のブログ

ゲームを作るのが大好きな人のブログ。UE4とBlender、MAYA(LT)、3DCoatを使用しています!

UMG、HUDでキャラにアタッチした際、追従が1フレームが遅れる場合の対処方法

f:id:toofu0:20160219231345p:plain

キャラクターにアタッチしたUIが、 カメラを左右に動かす事でUIが遅れてついてくる事はありませんか?

CovertWorldLocationToScreenLocation等で3D座標を2D座標に変換した際、呼び出すタイミングによっては、1フレーム前の座標を変換する事があります。今回はその対処方法を紹介します。 

※確認バージョンは4.10.3。資料があまり見当たらなかった為、間違えている可能性があります。

  

解決方法

座標計算を行うアクター(もしくはコンポーネント)のTickGroupを設定する事で解決します。下記画像の設定にした上で、Tick内で座標計算すればOKです。

f:id:toofu0:20160219221322p:plain

 

Tick Groupって何?

自分も詳しくわかっていませんが、どうやら各アクター(orコンポーネント)のTickのタイミングをある程度制御できる物のようです。TickGroupが同一のアクター同士では、各自並列でTickが走るようです。その為、どのアクターが先に実装されるか等は不明な状態となっています。しかし、TickGroupが違う場合はキッチリとTickの順番が分かれます。

※自分が調べた限りではポーズをかけたと同時にアクターを生成すると、生成されたアクターのTickの順番が乱れるという物がありました。将来的に修正されそうですが。

ちなみにUMGのTickはアクターでないらしく、このTickGroupの設定はありません。更にUMG内で座標計算を行うと表示がずれる為、別アクターやコンポーネントで計算した座標を渡してやるといいでしょう。