我有一个关于方法PlayAnimMontage (类ACharacter)的实现的问题。Here为接口信息。
我在试着理解代码。此方法在Montage_JumpToSection()之前调用Montage_Play()。代码如下:
float ACharacter::PlayAnimMontage(class UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName)
{
UAnimInstance * AnimInstance = (Mesh) ? Mesh->GetAnimInstance() : nullptr;
if (AnimMontage && AnimInstance)
{
float const Duration = AnimInstance->Montage_Play(AnimMontage, InPlayRate);
if (Duration > 0.f)
{
// Start at a given Section.
if (StartSectionName != NAME_None)
{
AnimInstance->Montage_JumpToSection(StartSectionName, AnimMontage);
}
return Duration;
}
}
return 0.f;
}我真的很困惑。为什么如果我播放动画,我可以在以后指定具体的部分?我知道它是有效的,但是,我不明白。有人能帮帮我吗??提前谢谢。
发布于 2019-02-08 10:20:55
当这行被调用时,
AnimInstance->Montage_Play(AnimMontage, InPlayRate);传入的动画剪辑开始播放。然而,下一行,
AnimInstance->Montage_JumpToSection(StartSectionName, AnimMontage);将动画剪辑跳转到特定部分。之所以在调用Montage_JumpToSection之前调用Montage_Play,是因为无法使用一个函数从特定部分开始播放动画蒙太奇。因此,Montage_Play和Montage_JumpToSection的连续调用将模拟从StartSectionName开始播放动画蒙太奇。请注意,仅当动画剪辑当前处于播放阶段时,Montage_JumpToSection才会起作用。若要检查当前是否正在播放动画剪辑,可以将剪辑传递到Montage_GetCurrentSection中以检查剪辑当前所在的区域。
https://stackoverflow.com/questions/54581115
复制相似问题