[Java]MoveToPoint - Frage

  • Hey zusammen.


    Und zwar habe ich ein kleines Problem.
    Ich möchte, dass sich mein Charakter zu dem Punkt hinbewegt, wo ich mit der Maus hingeklickt habe und das mit einer bestimmten (manipulierbaren) Geschwindigkeit.


    Eigentlich ist ja die Formel folgende: Ich erstelle einen Vektor aus der Differenz der beiden Punkte: mouseX-actualX als x-Wert und mouseY-actualY als y-Wert.
    Dann bringe ich den Vektor auf seine Einheitsgröße (hier mit v.normalise) und erhöhe dann die aktuellen X und Y um die x und y Werte des Vektors.


    Das klappt auch wunderbar, der spieler bewegt sich langsam (auf Grund der Unit 1) aber sicher zu seinem Ziel. Sobald ich einen Speed faktor setze, schießt er quasi übers Ziel hinaus und dann gibts ne endlos Schleife


    Sagen wir ich habe folgenden Code:


    Code
    public void moveToTargetPosition() {
    		Vector2f v = new Vector2f(targetPosition.x - (int)position.x - 24, targetPosition.y - (int)position.y - 24);
    		v.normalise();
    		this.position.x += v.x * 2f;
    		this.position.y += v.y * 2f;
    		System.out.println(String.format("x1:%d x2:%d y1:%d y2:%d", (int)this.position.x, (int)this.targetPosition.x, (int)this.position.y, (int)this.targetPosition.y));
    
    	}


    Code
    public void update(GameContainer gc, int delta) {
    		if((int)targetPosition.x != (int)position.x +24 || (int)targetPosition.y != (int)position.y + 24) {
    			moveToTargetPosition();
    		}
    
    	}


    Wie kann ich das fixen? :O