[UE4]平滑过渡实现PlayerController::Possess()
程序员文章站
2024-03-24 08:20:40
...
定义一个Timer成员变量:
FTimerHandle TimerHandle;
先执行SetViewTargetWithBlend,接着执行SetTimer(蓝图中的node叫Delay),两个函数的执行时长必须一样(这里是0.5秒)。
参数顺序说明:
0,TimerHandler
1,回调函数的所在的对象
2,Timer结束后触发的回调
3,触发回调函数的延迟时长
4,是否循环触发
//为了方便演示,假设这里PlayerController不为空
AHPlayerController* PC = NULL;
PC->SetViewTargetWithBlend(SelectedHero, 0.5f);
PC->GetWorldTimerManager().SetTimer(TimerHandle, this, &AHGameMode::SetTargetViewOver, 0.5f, false);
如果最后一个参数设置为true,那么可以再追加一个参数来设置首次执行的延迟时间,例如:
PC->GetWorldTimerManager().SetTimer(TimerHandle, this, &AHGameMode::SetTargetViewOver, 0.5f, true, 1.0f);
在回调函数中执行Possess()
void AHGameMode::SetTargetViewOver()
{
AHPlayerController* PC = NULL;
PC->Possess(Character);
}