私は現在、Java で単純な 2D ゲームをゼロから作成しています (学習目的で)。
プレイヤーがシュートできる速度を制御したい。そこで行われた方法は機能しますが、改善される可能性があります。ユーザーがマウスの左ボタンを押したままにすると、メソッドが呼び出されます。ユーザーがボタンを押したままにしている場合は機能しますが、マウス ボタンを離して (rateOfFire 時間よりも長く) 待ってから撃とうとすると、roftC の値が更新されないため、機能する場合と機能しない場合があります。プレーヤーは撃ちません。次に、それをメソッドに入れようとしましたupdate()
(1秒間に60回呼び出されます)。問題はまだ存在します。これを解決する方法が本当にわかりません。これが私のコードです:
/**
* Used to control the rate of fire
*/
private int roftC = 0;
/**
* Shoot a Projectile
*/
protected void shoot(int x, int y, double dir) {
Projectile p = new Bomb(x, y, dir);
if (roftC % p.getRateOfFire() == 0) {
level.addProjectile(p);
}
if (roftC > 6000) {
roftC = 0;
}
roftC++; // Whether it is here or down there doesn' t make a diffrence
}
/**
*
*/
@Override
public void update() {
// roftC++;
}