長按的的時間判定

[复制链接]
查看2720 | 回复7 | 2019-3-7 12:36:14 | 显示全部楼层 |阅读模式
小弟正在試蓄力攻擊的測式,但小弟卡在時間的判定

小弟目前做法是按下攻擊鍵的時候把蓄力的判定打開 ( bHoldAttack = true )
放開攻擊鍵就把蓄力的判定打開 ( bHoldAttack = false )
但這樣的話無法判定按下的時間,有什麼好的方式去抓嗎


這是小弟目前找到的可能方法之一用 GetInputKeyTimeDown 去抓,但測試後不知是那有問題
小弟實測後(time > 0.f)是立即輸出,改成四>1.f ,則沒作用,且以我我比較希望是放開後輸出
目前還達不到小弟的需求

APlayerController *PController = GetWorld()->GetFirstPlayerController();
float time = PController->GetInputKeyTimeDown(EKeys:eftMouseButton);
if (time > 0.f)
{
    GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Yellow, TEXT("test Input Key Time Down"));
}
叶知秋_lz | 2019-3-7 14:05:33 | 显示全部楼层
Timer 了解一下
回复 支持 反对

使用道具 举报

久丶情 | 2019-3-7 15:28:22 | 显示全部楼层
时间轴创建函数变量,加几个值在外部检测值是否达到,达到多少用多少伤害
回复 支持 反对

使用道具 举报

mknmknmk | 2019-3-8 08:57:36 | 显示全部楼层
本帖最后由 mknmknmk 于 2019-3-8 08:59 编辑

bool previousKeyDown=false;

float keydownTime=0;


   Tick(float deltaTime)
{

APlayerController *PController = GetWorld()->GetFirstPlayerController();
bool mouseKeyDown = PController->GetInputKeyDown(EKeys:eftMouseButton);
   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 );
      }

}
回复 支持 反对

使用道具 举报

lennon1989 | 2019-3-8 10:00:05 | 显示全部楼层
看来不会c++还是不要考虑做游戏了。。
回复 支持 反对

使用道具 举报

cow1330 | 2019-3-9 18:14:16 | 显示全部楼层
感謝大家的幫忙
花了半天終於試出來了,最後用是 Timer 做的
試出廷長的時間的判定之後就搞定

GetInputKeyDown還在試,看來一開始我想的太簡單了
回复 支持 反对

使用道具 举报

此心安处 | 2019-3-11 18:30:47 | 显示全部楼层
在Tick事件里,当bHoldAttack == true时,timeCounter += deltaTime;当bHoldAttack == false时,timeCounter =0 。这个timeCounter就是蓄力的时间。
回复 支持 反对

使用道具 举报

Dsingol | 2019-4-28 09:59:40 | 显示全部楼层
按下按键的时候,bHoldKey = true, startTime = GetWorld()->TimeSeconds, SetTimer设置进入下阶段蓄力的功能(如果你有多段蓄力的话)
松开按钮的时候,bHoldKey = false, holdTime = GetWorld()->TimeSeconds - startTime. ClearTimer清掉下阶段蓄力的功能
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

36

主题

77

回帖

256

积分

初阶编码师

积分
256