1.自機が空中にいて、壁にくっついており、スペースキーが押されたときに
反対側へジャンプできる条件を考えます。
三角跳びは、自機が空中にいる間1回だけできるようにします。
A. 自機が壁にくっついている : wX!=0
B. 自機が空中にいる : wY==0 && ld==0
(下の壁にもハシゴにも接していない)
C. スペースキーが押された : getkey(32)==1
D. 三角跳び回数制限 : kabekeri==0
(三角跳びのフラグ 0:三角跳びする前 1:三角跳びした後)
A〜Dをすべて満たす条件が、三角跳びできる条件になります。
(wX!=0 && wY==0 && ld==0 && getkey(32)==1 &&
kabekeri==0)
2.具体的なジャンプの処理として、vyのセット、自機の向き変更、
火花状のエフェクト発生処理などを加えます。
また、数回にわたって三角跳びできないように、フラグを立てておきます。
(kabekeri=1にします)
if (wX!=0 && wY==0 && ld==0 && getkey(32)==1
&& kabekeri==0){
vy=-7;
f=-f;
vx+=3*f;
p=$pat_chara+0;
kabekeri=1;
appear(new effect(x,y,f));
}
3.着地したら、再び三角跳びができるようにします。
具体的には、壁やハシゴに着地したら三角跳びのフラグを戻します。
(kabekeri=0にします)
if (wY>= 1) {
vy=0;
jmp=0;
y=trunc(y/32)*32+16;
kabekeri=0;
}
|
|
|
|
|