[UE4]平滑过渡实现PlayerController::Possess()

定义一个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);
}

 

 

你可能感兴趣的:(UE4)