Ich verwende einen Timer, wenn die Mit der Maus wird geklickt, weil es eine allmähliche Bewegung im Laufe der Zeit simuliert und es gut funktioniert, wenn man nur einen Klick nach dem anderen macht. Gibt es bessere Möglichkeiten, sanfte Bewegungen zu erreichen? (z. B. das Laufen zu einem bestimmten Punkt)
I Ich verwende X und Z, weil Y automatisch geschieht, da es die aktuelle Geländehöhe ist (Ich kann es bei Bedarf jederzeit ändern) Derzeit kann sich der Benutzer nur in eine positive Richtung bewegen, aber ich werde dies auch ändern. Das Problem ist nur die Beschleunigung.
Dies ist der Code unten. Ich weiß, dass er chaotisch ist, aber ich hoffe, dass es eine Lösung gibt.
Code: Select all
private void checkInputs(MousePicker picker){
if (Mouse.isButtonDown(0) && !picker.mouseButton0Clicked) {
currentSpeed = 40;
startX = getPosition().x;
startZ = getPosition().z;
targetX = picker.getCurrentTerrainPoint().x;
targetZ = picker.getCurrentTerrainPoint().z;
Timer timer = new Timer();
int begin = 0;
timer.schedule(new TimerTask() {
int counter = 0;
@Override
public void run() {
if(startX=targetZ){
timer.cancel();
}
currentSpeed = 0;
}
}, begin, (long) currentSpeed);
}
picker.mouseButton0Clicked = Mouse.isButtonDown(0);
}