ホッケーのディスクがゆっくりと動き、速度が少しずつ低下するようなアニメーションを作成しようとしています。
だから私はこれをやろうとしました:
for(Disc d : panel.getDiscs()
{
if(d.getLaunch() <= 70) move(d);
}
と :
private void move(Disc d)
{
Point p = d.getLocation();
Point speed = d.getSpeed();
Dimension size = d.getSize();
int vx = speed.x;
int vy = speed.y;
int x = p.x;
int y = p.y;
if (x + vx < 0 || x + size.width + vx > panel.getWidth()) {
vx *= -1;
}
if (y + vy < 0 || y + size.height + vy > panel.getHeight()) {
vy *= -1;
}
x += vx;
y += vy;
d.setSpeed(new Point(vx, vy));
d.setLocation(new Point(x, y));
try
{
Thread.sleep(d.getLaunch());
} catch (InterruptedException e)
{
e.printStackTrace();
}
if(d.getCoeff() < 5) d.setCoeff(d.getCoeff()+1);
else { d.setLaunch(d.getLaunch()+1); d.setCoeff(0); }
}
ここで私がやろうとしているのは、20から始まり、70まで実行し続ける値(起動)を増やすことです。その後、すべてのでこの値を使用しますThread.sleep(launch);
。以前に5フレームが表示された場合にのみ、この値を増やします(係数)。
問題は次のとおりです。小さすぎる値で試してみると、ディスクが速すぎて、実行が早すぎます。より高い値で試してみると、ディスクの速度は良く見えますが、最後のアニメーションはあまりスムーズではありません...どうすればよいですか?