空中に自機がいるときにスペースキーが押された場合、一度だけジャンプする
ようにします。2段ジャンプさせたいときの条件を考えてみます。
1.自機が空中にいる → wY==0
2.スペースキーが押された → getkey(32)==1
3.空中でのジャンプは1回だけにする → (2段ジャンプの判定変数jmp2を導入)
1〜3を満たすように、プログラムを書いてみます。
if (wY== 0 && getkey(32)==1 && jmp2==0)
{vy=-7;jmp2=1;appear(new effect(x,y,f));}
*jmp2は2段ジャンプしたかのフラグで、すでにジャンプしていれば1が入ります。
*判定条件にjmp2==0が入っているので、空中でジャンプしていない場合のみ
処理が実行されます。
*{ } カッコ内の処理が2段ジャンプの具体的内容で、vy=-7でジャンプ、jmp2=1で
2段ジャンプのフラグを立て、appear(new effect(x,y,f))は自機の下に火花状の
エフェクトを出す処理になっています。
以上で一通りの処理はできるのですが、このままでは2段ジャンプした後にjmp2が
1のままになってしまうので、自機がブロックに着地したときに、再び2段ジャンプ
できるようにします。プログラムでは次の文でjmp2をゼロに戻しています。
if (wY>= 1) {vy=0;jmp=0;jmp2=0;y=trunc(y/32)*32+16;}
|
|
|
|