此文废弃,格式太难看了,重新用markdown整理了 ,请参照这里:http://blog.csdn.net/yangxuan0261/article/details/54744385
定个成员变量,hold住这个定时器
FTimerHandle
mTimer
;
使用lambda表达式的delegate
auto rotaInterp = [&]() -> void{
mTurnToRot = UKismetMathLibrary:: RInterpTo(
GetActorRotation()
, UKismetMathLibrary::FindLookAtRotation (GetActorLocation(), mTurnToLoc)
, GetWorld()->GetDeltaSeconds ()
, 10.f);
if (GetActorRotation ().Equals( mTurnToRot, 1.f))
{
this->GetWorldTimerManager ().ClearTimer( mTimer); //清理定时器
UE_LOG(SkillLogger, Warning , TEXT("--- AMyChar::FaceToTargetLoc, stop rotate"));
}
else
{
SetActorRotation(mTurnToRot );
}
};
GetWorldTimerManager().SetTimer (mTimer, FTimerDelegate::CreateLambda(rotaInterp ), GetWorld()->GetDeltaSeconds (), true); //设置定时器
还有各种delegate就自己去发挥了