前回の続きです。
キャラを動かしたい
いつまでもflappy birdベースのままではマリオにならない。
手を加えていきたいと思います。
前回言っていた
・自分で動きたい(今は土管が向かってくることで動いているように見えているだけ)
をやりたいと思います。
今の実装では、どうも、どのキーを押してもジャンプする模様。
左右行くためには、矢印キーそれぞれが押されたかどうかを判断できないといけません。
moveUp関数の中で、以下のコードを追記してみて、
テスト的に出していたログ出力を今回のものだけにしました。
let key = ''; switch (e.key) { case 'ArrowUp': key = '↑'; break; case 'ArrowDown': key = '↓'; break; case 'ArrowLeft': key = '←'; break; case 'ArrowRight': key = '→'; break; } console.log('key: ' +key);
うまくいったようです。
では、右、左、それぞれ押したときに、鳥のX座標を加算、減算できるように
フラグを追加します。
var flgLeftPress = 0; var flgRightPress = 0;次に、キーボードの入力部分で、左右キーを押したときにフラグをON(=1)にします。
switch (e.key) { case 'ArrowUp': if(flgJumping == 0){ flgJumping = 1; jInc = JFIRST; } key = '↑'; break; case 'ArrowDown': key = '↓'; break; case 'ArrowLeft': key = '←'; flgLeftPress = 1; break; case 'ArrowRight': key = '→'; flgRightPress = 1; break; }最後にdraw関数の中で、左右キーを押したらそれぞれ10だけ動くように、bX変数の値を増減させます。 増減させた後は、フラグをOFF(=0)に戻しておきます。
if(flgLeftPress == 1){ bX -= 10; flgLeftPress = 0; } if(flgRightPress == 1){ bX += 10; flgRightPress = 0 }
一応動きましたが、右と上同時押しで右斜めにジャンプできない、、、、
まだ改良が必要のようです。
あと、ソースがごちゃごちゃしてきたので、いつか整理したい、、、、
今回のソースはこちら。