Задержка стрельбы - PullRequest
       23

Задержка стрельбы

0 голосов
/ 14 октября 2018

Я делаю java-игру и хотел бы добавить механику стрельбы, в которой, если пользователь щелкнет по нему, он сразу же выстрелит, но если его удерживать, он будет стрелять с постоянной скоростью.Я могу частично добиться этого, используя Timer и планируя задачу с фиксированной скоростью, но если пользователь снова нажмет кнопку, он либо выстрелит мгновенно, победив цель задержки с фиксированной скоростью.

Этоэто то, что я имею до сих пор:

private Game game;
private Timer timer = new Timer();

@Override
 public void mousePressed(MouseEvent e) {
    this.timer = new Timer();
    this.timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            for(int i = 0; i < game.playerGun.getBulletsPerShot(); i ++) {
                try {
                    game.shoot();
                    TimeUnit.MILLISECONDS.sleep((long) (game.playerGun.getDelayBetweenEachBullet() * 1000) );
                } catch (IOException | InterruptedException e1) {
                e1.printStackTrace();
                }
            }
        }

    }, (long)game.playerGun.getDelayBetweenEachShot() * 1000, (long) (game.playerGun.getDelayBetweenEachShot() * 1000));

}

@Override
public void mouseReleased(MouseEvent e) {
    this.timer.cancel();
}

Я также читал, что таймер лучше заменить на ScheduledExecutorService и что использование sleep() может вызвать смещение и не очень гибко.

...