今天遇到一个奇怪的问题,当AI不在视野内,animation notify不触发
当AI进入玩家视野,animation notify触发正常
后来发现是SkeletalMeshComponent的VisibilityBasedAnimTickOption属性设置问题。
当VisibilityBasedAnimTickOption设置为OnlyTickPoseWhenRendered时,就会出现该问题
当VisibilityBasedAnimTickOption设置为AlwaysTickPoseAndRefreshBones时,animation notify就可以正常触发。
void AShooterCharacter::UpdatePawnMeshes()
{
bool const bFirstPerson = IsFirstPerson();
Mesh1P->VisibilityBasedAnimTickOption = !bFirstPerson ? EVisibilityBasedAnimTickOption::OnlyTickPoseWhenRendered : EVisibilityBasedAnimTickOption::AlwaysTickPoseAndRefreshBones;
Mesh1P->SetOwnerNoSee(!bFirstPerson);
GetMesh()->VisibilityBasedAnimTickOption = bFirstPerson ? EVisibilityBasedAnimTickOption::OnlyTickPoseWhenRendered : EVisibilityBasedAnimTickOption::AlwaysTickPoseAndRefreshBones;
GetMesh()->SetOwnerNoSee(bFirstPerson);
}
以上是shootergame的代码,对mesh1P和mesh3P分别作了处理,这就意味着mesh的默认属性在这里被重写了。