質問: new PVector(mc.size,mc.loc.y);//弾の位置ベクトルを初期化 } } } class Enemy{//敵機クラス float size;//敵機の直径 PVector loc;//敵機の位置ベクトル float sp;//敵機の速度 Enemy(){ size=20; loc=new PVector(width+size/2,random(size/2,height-size/2)); sp=random(5,10);//敵機んお速度をランダムで決定 } void display(){//敵機を表示するメソッド fill(0); circle(loc.x,loc.y,size); } void update(){ //敵機の座標を更新するメソッド(敵機を移動) loc.x-=sp;//敵機のx座標を変更 if(loc.x+size/2 < 0){//敵が画面外に出た場合 loc=new PVector(width+size/2,random(size/2,height-size/2));//敵機の座標を初期化 } } } ```
回答: 1 回目のクリックからバグっています。 `mousePressed` は「マウスのボタンが押されている間ずっと true になる」ものであり「マウスのボタンが押されたときの一瞬だけ true になる」ものではありません。また `draw` 関数は人間の動きに比べるととても早い周期で何回も繰り返し呼ばれています。このため今の実装だと一瞬で 10 発全部発射されています。たとえば `println(bulletCount)` を `draw` 関数の中に仕込んでログを見れば、何かがおかしいと気付けたでしょう。 また `bulletJudge` は一度 true になると永遠に `false` に戻らないため、一度撃たれた弾が永遠に動き続けています。`bulletCount` の値によって動けなくなる弾があるため暫くクリックしていると動きがずれてきて、点滅しているように見えるなどします。