お世話になっております。
現在、AActorを継承したクラスにてCharacterMovementComponentを用いずキャラクターの制御を行っており、
GetRootMotionTransform()でRootMotionの値を取得し、利用しようと考えております。
以下のような手順です。
1.アクターに対して回転と移動を行うアニメーションシーケンスを再生。
※再生されるアニメーションシーケンスのRootBoneEnableは有効状態
2.対象となるアクターのTickにて、SkeletalMeshコンポーネントのConsumeRootMotion()を使用し、
パラメーター(FRootMotionMovementParams)を取得。
3.GetRootMotionTransform()にてTransform値を取得。
毎フレーム、GetRootMotionTransform()の値を取得しておりますが、
アニメーションシーケンス再生後の特定のフレーム(1~3F目)での移動値、回転値の各成分が0となっており、
正しくTransform値が取得できていないようです。(それ以降のタイミングでは取得できております。)
この挙動に関して何かしら解決方法、
もしくは別の取得方法などあればご教示いただければ幸いです。
お手数をお掛け致しますが、どうぞ宜しく御願い致します。
お世話になっております。
恐縮ですが、問題の切り分けのために以下の点に関して確認させてください。
・別途RootMortionとUROを組み合わせたご質問をいただいておりますが、
こちらUROを入れた状態で発生している状況でしょうか?
CharacterMovementComponentでの確認になりますが、
こちらでは開始時点からGetRootMotionTransformの値は返ってきているようでした。
GetRootMotionTransformが初期値になってしまっているという状況であれば、
ConsumeRootMotion()がうまく動いていない可能性があります。
こちらの値の取得に関しましては以下の処理が参考になるかと思いますので、
現在実装していただいているものと比較して確認していただければと思います。
.\release-4.19\Engine\Source\Runtime\Engine\Private\Components\CharacterMovementComponent.cpp
お手数おかけしますが、ご確認のほどよろしくお願いいたします。
ご確認、ありがとうございます。
>UROの状態
こちらに関しましてはUROはOFFの状態で検証しておりました。
>CharacterMovementComponent
添付いただきましたソースをもとに処理を見直したところ、
こちら側の処理のTickPoseとGetRootMotionTransformのタイミングによる可能性が高いのではないかということが分かりました。
参考となる処理のご提示ありがとうございました。