前提・実現したいこと
重力を考慮してボールをバウンドさせたいです。
発生している問題
y座標を y=y+dy+5tt; で表していますが、tの値が大きくなるにつれ、tの二乗値が大きくなり動きが早すぎてしまいます。どのように表現したら良いでしょうか。
該当のソースコード
java
1 class Maru extends Shape{ 2 /*■■■ フィールド変数部 ■■■*/ 3 int r; // 半径 4 5 /*■■■ コンストラクタ部 ■■■*/ 6 Maru () { // 引数が無い場合のデフォルト値 7 r = 80; 8 x = y = 200; 9 dx = 6; 10 dy = 2; 11 } 12 Maru (int r, int x, int y, int dx, int dy){ // 引数がある場合 13 this.r = r; 14 this.x = x; 15 this.y = y; 16 this.dx = dx; 17 this.dy = dy; 18 } 19 20 /*■■■ メソッド部 ■■■*/ 21 void draw(Graphics g){ // 仮の画用紙 img の GC である img_gが引数 22 g.setColor(Color.white); // 色を設定 23 g.drawOval(x-r, y-r, 2*r, 2*r); // ○の描画 24 25 } 26 void update (int width, int height){ // オブジェクトのパラメータの更新 27 if(height-r > y && y > r){ 28 29 t+=1; //時間処理 30 } 31 if (x >= width-r){ 32 dx=dx*(-1)*2; // 右端に当たったときの処理 跳ね返り係数も追加 33 // g.setcolor(Color.white); 34 } 35 if (x <= r){ 36 dx=dx*(-1)/2; // 左端に当たったときの処理 37 // g.setcolor(Color.red); 38 } 39 if (y >= height-r){ 40 dy=dy*(-1)/2; // 下端に当たったときの処理 41 t = 0; 42 // g.setcolor(Color.blue); 43 } 44 if (y <= r){ 45 dy=dy*(-1)*2; // 上端に当たったときの処理 46 // g.setcolor(Color.green); 47 } 48 49 x=x+dx; // x 座標の更新 50 y=y+dy+5*t*t; // y 座標の更新,重力加速度 51 } 52} 53
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/23 13:36