定数
弾丸の描画はできましたが、スペースキーを押し続けると弾丸がつながって見えます。これは描画処理毎に弾丸を発射していることが原因です。そこで発射間隔を設定します。
次の定数、変数を追加します。
1 2 |
var BULLET_INTER=10; //発射間隔 var bullet_count = 0; //発射間隔カウンター |
描画処理を行う度に「発射間隔カウンター」へ1加算します。この値が「発射間隔」を超えた時に発射処理を行います。
弾丸描画
弾丸描画処理を次のように変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/* 弾丸描画 */ function bulletMove(){ if(bullet_flg==true){ //スペースキーが押されているか bullet_count++; if(bullet_count > BULLET_INTER){ //発射間隔を過ぎているか shot(my_x+my_x_size/2,canvas.height-my_y_size-10);//発射 bullet_count = 0; } } for(var i=0;i<bullet.length;i++){ //発射されている全弾丸を描画 if(bullet[i][0] == BULLET_SHOT ){ ctx.fillStyle = "yellow"; ctx.lineWidth = 1; ctx.fillRect(bullet[i][1]-BULLET_WIDTH/2,bullet[i][2]-BULLET_HEIGHT,BULLET_WIDTH,BULLET_HEIGHT); bullet[i][2] = bullet[i][2] - BULLET_SPEED; //弾丸を進める if(bullet[i][2]<0){ //弾丸が一番上に達したか bullet[i][0] = BULLET_OFF; //弾丸終了 } } } } |
実行
動作を確認します。
少しリアルになりました。次に的が欲しくなりますね。
ここまでのソースコードを掲載します。