ダッシュする仕組みというか、連打をどうやって判定するかが知りたいです。連打というのは、
ここでは、2回カチッカチッと押す感じの事を指します。
とりあえず、キーボードでも動作させる為に、関数を作ったのですが、それは上手くいきました様子?
です。というのは、プリントデバッグみたいに、関数の戻り値を元にフラグを立てて
DrawFormatStringで"KEY OK!!"みたいに表示させる事が出来たので、恐らく上手くいっていると
思われます。
その関数を書きます。
int CheckContinuePressing(int key)
{
static int presstime[2]={0};
static int prevkey=0;
if(!prevkey && CheckHitKey(key))//キーが押された瞬間なら
{
static int i=0;//カウント変数
presstime[i]=GetTickCount();//今の時間が知りたい(ミリ秒単位で)
++i;//カウントする
if(i==2)//iが2なら
{
if(presstime[1]-presstime[0]<=0.35*1000)//2つの時間差が0.35秒より小さければ
{
i=0;//iを0にする
presstime[0]=0;//presstime[]を2つとも0にしておく
presstime[1]=0;
return 1; //1を返す
}else{
i=0;//iを0にする
presstime[0]=0;//presstime[]を2つとも0にしておく
presstime[1]=0;
return 0; //0を返す
}
}
}
prevkey=CheckHitKey(key);//今のフレームのキー入力を保存して、
//後のキー入力判定のとき使う
return 0;
}
しかし、何故か、ジョイパッドでは上手くいかないので、ここで質問させてもらいました。
ジョイパッドの判定関数はこちらです。どうすれば、うまく判定できるでしょうか?
教えてください。お願いします。
int CheckContinueJoyStick(int joytype,int joybotton)
{
int p1;//p1は、ジョイパッドのタイプによって受け取る値が違う
if(joytype==0)
p1=GetJoypadInputState(DX_INPUT_KEY_PAD1) ;//joytypeが0ならjoypad1を
else
p1=GetJoypadInputState(DX_INPUT_PAD2) ;//joytypeが0以外ならjoypad2を
static int presstime[2]={0};//押した時間を計測するための変数
static int prevkey=0;//前のパッド入力を判定させるもの
if(!prevkey && (p1 & joybotton))//押した瞬間ならば
{
static int i=0;//カウント変数
presstime[i]=GetTickCount();//押した時間をミリ秒単位で取得
++i;//押されたならカウントする
if(i==2)//i==2なら
{
if(presstime[1]-presstime[0]<=0.35*1000)//0.35秒以下なら
{
i=0;
presstime[0]=0;
presstime[1]=0;
return 1;//1を返す
}else{
i=0;
presstime[0]=0;
presstime[1]=0;
return 0;//それ以外なら0を返す
}
}
}
prevkey=p1 & joybotton;
return 0;
}