【UE4】アニメーションモンタージュC ++関連注意

【UE4】アニメーションモンタージュC ++関連注意

https://zhuanlan.zhihu.com/p/47767283

 

C ++アニメーションモンタージュを再生する方法

MontagePtrモンタージュポインタであることを特徴と仮定は、キャラクタ内で行われます。

float DeathAnimDuration = PlayAnimMontage(MontagePtr) / (GetMesh() && GetMesh()->GlobalAnimRateScale > 0 ? GetMesh()->GlobalAnimRateScale : 1);

あなただけのアニメーションシーケンスを再生する場合は、)(PlayAnimationを使用することができます

if (USkeletalMeshComponent *Mesh = GetMesh())
{
    Mesh->PlayAnimation(AnimSequence, false);
}
注:PlayAnimationは直接AnimSequenceを再生しますが、アクションを混合することはできません。たとえば、ときにアクションをプレイした後の攻撃は、自動的にアイドル状態に戻すことはできませんが、モンタージュスロットの動作を切り替えることによって、自動的に行うことができます。

其他参考:
どのように私はC ++から厳密にアニメーションを再生することができますか?
https://answers.unrealengine.com/questions/292345/how-can-i-play-animations-strictly-from-c.html

(AnimSequenceによって作成された)C ++ダイナミックプレーヤーモンタージュ

キーワード:UE4、C ++、AnimSequence、AnimMontage、スロット、動的に作成、アニメーションの再生

アニメーションスロット青写真、スロットDefaultSlotのデフォルトの名前の最初のノードを追加します。この名前は、C ++コードで使用されます

AnimSeq:再生するAnimSequenceオブジェクトポインタを取得されたと想定

float AnimLength = 0.f;
if (USkeletalMeshComponent *Mesh = MyActor->FindComponentByClass<USkeletalMeshComponent>())
{
    if (UAnimInstance *AnimInst = Mesh->GetAnimInstance())
    {
        if (UAnimMontage* Mtg = AnimInst->PlaySlotAnimationAsDynamicMontage(AnimSeq, TEXT("DefaultSlot"), 0.25f, 0.25f, 1.f, 1))
        {
            AnimLength = Mtg->GetPlayLength();
        }
    }
}
モンタージュは同じNotifyをトリガします:モンタージュを再生するときに使用UAnimInstance :: PlaySlotAnimationAsDynamicMontage()、通知でアニメーションシーケンスパラメータは、まだ有効なモンタージュは、動的に、すなわち、生成されました。

 

使用PlaySlotAnimationAsDynamicMontage()再生モンタージュ、そうでない場合はループモンタージュ中に、実行UAnimInstanceの後に再生するようにしてくださいは:: Montage_Stop()、それ以外の場合は、他のモンタージュに切り替える際に無効になり、アニメーションのための論理的な青写真を妨害する、現在のモンタージュを停止しました。

アニメーションモンタージュを再生するときのジェスチャーが最後の残ってみよう

キーワード:UE4、モンタージュ、C ++、再生速度、再生速度、加速再生、スロー再生

三つのモード
モード1:フレームをフリーズしたいでは、GlobalAnimRateScaleプロパティのSkeletonComponentは0に設定されています。
たとえば、あなたがして、3フレーム目で骨の役割を凍結0にアニメーションの3フレーム目の時にプロパティを設定します。

ACharacter::GetMesh()->GlobalAnimRateScale = 0.f;

オプション2:

ACharacter::GetMesh()->bNoSkeletonUpdate = true;

モード3:

ACharacter::GetMesh()->bPauseAnims = true;
注:通常、完成演奏AnimSequenceは、ループ再生に設定されていない場合は、自動的に再生が最後の1が完了した後に停止します。あなたはより多くのプロパティを設定する必要がある場合モンタージュにのみ再生されます。

セクションC ++果たしたモンタージュで指定

実施例1:
第三パラメータStartSectionNameを指定します

float ACharacter::PlayAnimMontage(class UAnimMontage* AnimMontage, float InPlayRate = 1.f, FName StartSectionName = NAME_None);

オプション2:
使用UAnimInstance::Montage_JumpToSection()

if (USkeletalMeshComponent *Mesh = Character->GetMesh())
{
    if (UAnimInstance *AnimInst = Mesh->GetAnimInstance())
    {
        Char->PlayAnimMontage(MontagePtr);
        AnimInst->Montage_JumpToSection(FName("step_03"), MontagePtr);
    }
}
アニメーションは、セクションの実装のプレイの状態にある文字は、モンタージュMontage_JumpToSection、そうでない場合JumpToSectionが無効に属していることを確認してください。

モンタージュセクション、無効なスイッチの問題(2018年2月11日)

キーワード:UE4モンタージュセクションに動作していません

症状:
エディタでSetNextSectionが正常に動作しますが、パッケージ版では有効ではありません。

ソリューション:
SetNextSectionはJumpToSectionを置き換えます。

参考自:モンタージュ不要なセクション切り替え
https://answers.unrealengine.com/questions/172537/montage-unwanted-section-switching.html

時間IF部は非常に短く、0に少しずつまたはセットうちのブレンドでブレンドする必要があります(デフォルトは0.25である)、またはJumpToSection効果なし。

モンタージュループ

自動的に指定するアニメーションループの青写真は、ステートマシンAnimSequenceに従ってためのスイッチング制御アニメーションアニメーション青写真場合、状態マシンは、直接、アニメーション缶AnimSequence、他の設定を指定します。
あなたがモンタージュを再生するためにC ++を使用する場合は、次の詳細に注意を払う必要があります。

  1. :既存のリソースモンタージュを使用している場合は、モンタージュは次のように、ループに設定する必要が
    オープンモンタージュの編集ウィンドウで、最初のクリック位置1を、その後、位置2(マウスの左ボタンクリックの両方)をクリックします

プレビューセクションその後、プログレスバーが、この時点でループを1 X、モンタージュを持っていますが、Aを表し、

再実行した後ACharacter::PlayAnimMontage()、自動的にループAは、モンタージュを指定することができます。PlayAnimMontage()は一度だけこれを実行する必要があります。

2.モンタージュを動的に作成して再生する場合は、必要があるでしょうLoopCountな9999として十分な大きさであるように。このように、現在のモンタージュがループ:

AnimInstance->PlaySlotAnimationAsDynamicMontage(AnimSeq, TEXT("DefaultSlot"), 0.25f, 0.25f, 1.f, 9999));
モンタージュループが用意されていませんが、すぐに放映された次の再生を行う際モンタージュで再生するときに検出された長い時間が累積ティックに保持:この方法では実現可能です。答えは不可能です!正味の効果は次のとおりです。アイドル状態のアニメーションに切り替えるために、2人のプレーヤーモンタージュ短い時間の間があるでしょう。

 

モンタージュ停止再生

あなたが現在再生中のモンタージュを停止する場合は、実行StopAnimMontage()

void ACharacter::StopAnimMontage(class UAnimMontage* AnimMontage);
あなたはモンタージュの再生を停止したい場合はアニメーションの融合効果は、0.25のデフォルト値として、0よりも、モンタージュのブレンドアウト時間以上に覚えています。

いいえ統合問題ないモンタージュを切り替えます

理由:
モンタージュパラメータがBlend In0に設定されています。

ソリューション:
モンタージュパラメータBlend In(ブレンドオプション- >でブレンド- >タイムをブレンド) の変化は、このような0.25のデフォルト値として、0よりも大きくなります。

 

 

 

 

 

 

 

 

 

 

 

公開された80元の記事 ウォン称賛38 ビュー40000 +

おすすめ

転載: blog.csdn.net/kuangben2000/article/details/104488973