UE4蓝图中存在Delay节点(只能在事件图表里使用)
如果要在UE C++ 实现,可以使用Timer.
在这里,我的目标是设置bIsRolling = 1后,延时一段时间再设置bIsRolling =0;
1.在头文件声明计时器。
//计时器
FTimerHandle TimerHandle;
2.Cpp代码(注意注释)
void ACharacterBase::Roll()
{
if (!bIsRolling)
{
if ((InputX == 0) && (InputY == 0))
{
CurrentInputX = 0;
CurrentInputY = 0;
bIsRolling = 1;
//延时具体实现,0.2秒后会执行setIsRoll()方法,将bIsRolling设为0;
GetWorld()->GetTimerManager().SetTimer(TimerHandle, this, &ACharacterBase::setIsRoll, 0.2f, true);
}
else if (!bIsLocking)
{
CurrentInputX = 1;
CurrentInputY = 0;
bIsRolling = 1;
//
GetWorld()->GetTimerManager().SetTimer(TimerHandle, this, &ACharacterBase::setIsRoll, 0.7f, true);
}
}
}
//被Timer调用
void ACharacterBase::setIsRoll()
{
bIsRolling = 0;
//清除计时器TimerHandle
GetWorld()->GetTimerManager().ClearTimer(TimerHandle);
}