質問: posi.y;} //速度と位置をセットする void set(float X,float Y,float spX,float spY){ posi.set(X,Y); sp.set(spX,spY);}} //関数 void hitme(){ if(M6 ==1 && mouseX + 10 > enballx[i] && mouseX - 10 < enbally[i] && mouseY - 10
回答: 複数の問題がありそうですが、多分一番気にしておられる点だけコメントします。 問題は「ボールを移動させるアニメーション」が期待だったのに「ボールの軌跡が点々と塗りつぶされる」結果になってしまったことだと思います。原因はdrawの働きを勘違いしておられることでしょうね。 (A) drawメソッドはフレーム単位で繰り返し呼び出される(本コードでは1秒に60回程度) (B) しかし「前のフレームで描画したものを自動的に消す」なんてことはしてくれない 質問者さんは(A)は分かっておいでのようですが(B)が把握できていないのだと思います。アニメーションをしたいなら「前のフレームで描画した内容を自分で消さなければならない」ことに注意してください。 対処: とりあえずの対処としては「drawメソッドの先頭でスケッチの画面全体を一旦全て消す」のが簡単だと思います。 ``` ... void draw() { fill(255); // 追加 rect(0, 0, width, height); // 追加 ... } ... ``` ちなみにご質問のコードは質問者さんが動かしたときのものではないと思います。なぜなら文法エラーになるからです。以下の変数宣言が抜けているようです。 `enball[] ball = new enball[6];` コードを提示する際には「ご自分が動かしたそのまんまの最新のコード」を示すようご注意ください。さもないと閲覧者が再現する際に余計な手間がかかります。