長按的的時間判定
小弟正在試蓄力攻擊的測式,但小弟卡在時間的判定小弟目前做法是按下攻擊鍵的時候把蓄力的判定打開 ( bHoldAttack = true )
放開攻擊鍵就把蓄力的判定打開 ( bHoldAttack = false )
但這樣的話無法判定按下的時間,有什麼好的方式去抓嗎
這是小弟目前找到的可能方法之一用 GetInputKeyTimeDown 去抓,但測試後不知是那有問題
小弟實測後(time > 0.f)是立即輸出,改成四>1.f ,則沒作用,且以我我比較希望是放開後輸出
目前還達不到小弟的需求
APlayerController *PController = GetWorld()->GetFirstPlayerController();
float time = PController->GetInputKeyTimeDown(EKeys::LeftMouseButton);
if (time > 0.f)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Yellow, TEXT("test Input Key Time Down"));
}
Timer 了解一下 时间轴创建函数变量,加几个值在外部检测值是否达到,达到多少用多少伤害:D 本帖最后由 mknmknmk 于 2019-3-8 08:59 编辑
bool previousKeyDown=false;
float keydownTime=0;
Tick(float deltaTime)
{
APlayerController *PController = GetWorld()->GetFirstPlayerController();
bool mouseKeyDown = PController->GetInputKeyDown(EKeys::LeftMouseButton);
if(!previousKeyDown&&mouseKeyDown){
keydownTime=0;
}
else if(previousKeyDown&&mouseKeyDown){
keydownTime +=deltaTime;
}
else if(previousKeyDown&&!mouseKeyDown){
keydownTime=0;
}
previousKeyDown = mouseKeyDown;
if(keydownTime >5.0f){
LeftMouseHoldTime(keydownTime );
}
} 看来不会c++还是不要考虑做游戏了。。 感謝大家的幫忙
花了半天終於試出來了,最後用是 Timer 做的
試出廷長的時間的判定之後就搞定
GetInputKeyDown還在試,看來一開始我想的太簡單了 在Tick事件里,当bHoldAttack == true时,timeCounter += deltaTime;当bHoldAttack == false时,timeCounter =0 。这个timeCounter就是蓄力的时间。 按下按键的时候,bHoldKey = true, startTime = GetWorld()->TimeSeconds, SetTimer设置进入下阶段蓄力的功能(如果你有多段蓄力的话)
松开按钮的时候,bHoldKey = false, holdTime = GetWorld()->TimeSeconds - startTime. ClearTimer清掉下阶段蓄力的功能
页:
[1]