Java:
package Action;
import java.awt.event.*;
import java.util.Timer;
import java.util.TimerTask;
import Data.Spielerkugel;
import Game.Settings;
import Gui.Panel;
public class MouseMotionHandler implements MouseMotionListener {
private boolean canShoot = true;
private Panel p;
public MouseMotionHandler(Panel panel) {
p = panel;
}
@Override
public void mouseDragged(MouseEvent e) {
//Steuerung der Rotation der Kanone
//Bewegt man die Maus nach oben, so wird das Kanonenrohr gegen den Uhrzeigersinn rotiert
//Bewegt man die Maus nach unten, so wird das Kanonenrohr mit dem Uhrzeigersinn rotiert
double winkel = Math.atan2(420-e.getY(), 70 - e.getX());
winkel = Math.toDegrees(winkel) - 180;
if(winkel > -110 && winkel < 20) {
p.setAngle(winkel);
p.getKanoneRohr().setImage(p.rotateImageX(p.getKanoneRohr().getBaseImage(), winkel));
}
if(Settings.fastfire) {
canShoot = false;
double w = p.getAngle() + 90;
//Berechnet die Kräfte in x und y Richtung
//Erstellt neue Kanonenkugel
p.getKanonenkugeln().add(new Spielerkugel(w, 1, 1, 0.1, 15, Settings.spieler_damage, Settings.v0, p));
pauseShot(5);
}
}
//Int für die Methode pauseShot
private int t = 0;
//Methode enthält Timer, um Pause zwischen den Schüssen zu erzielen
public void pauseShot(int duration) {
Timer timer;
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
if(t == duration) {
canShoot = true;
t= 0;
timer.cancel();
}
t++;
}
}, 0, 100);
}
}
Da ist keine Verzögerung.
Ich bin etwas ratlos wie ich die Verzögerung zwischen den Schüssen kriegen kann.