最後に呼び出されてからの時間を測定するupdate()メソッドを作成し、それに基づいて箇条書きの場所を更新することはできますか?
弾丸がほぼ一定の速度で動くようになります。
public class Bullet {
// speed is in units/second
// angle is in radians
double x;
double y;
double sv;
double sh;
public Bullet(double x, double y, double angle, double speed) {
this.x = x;
this.y = y;
sv = Math.sin(angle)*speed;
sh = Math.cos(angle)*speed;
last_updated = System.currentTimeMillis();
}
long last_updated;
public void update() {
long time_elapsed = System.currentTimeMillis() - last_updated;
last_updated = System.currentTimeMillis();
this.x += this.hs*(this.time_elapsed/1000)
this.y += this.vs*(this.time_elapsed/1000)
}
}
たぶん、あなたは、あなたの座標系に適したものとするために角度を再生する必要があります:
EDIT2(FPSが十分な大きさであることを考えると)。 (角度を無効にする、Piを追加/減算するなどのようなものです)
これは役立ちます。
私はそれを試みることができましたが、私はまだそれが正しく動かないようにします – Foxx
そのメソッドのコードを投稿できますか?どこかpastebin.comのように。私たちはそれを見て何かを提案することができます。 – Rogach
そのかなり多く 作成:bullet(x、y、vs、hs)/ update:update(){this.x + = vs; this.y + = hs;} – Foxx