Ich arbeite an einem Spiel, das Sprites im zweidimensionalen Raum nutzt, und ich versuche, einen besseren Weg zu finden, an einem bestimmten Punkt anzuhalten.Bessere Möglichkeit, an einem bestimmten Punkt anzuhalten?
Ich habe die folgende bekommen zu arbeiten:
public void target(boolean hasTargetIn, Point target) {
if (hasTarget) {
deltaX = target.getX() - this.mPos.getX();
deltaY = target.getY() - this.mPos.getY();
mDirection = Math.atan2(deltaY,deltaX);
mVelocityX = Math.cos(mDirection) * mSpeed;
mVelocityY = Math.sin(mDirection) * mSpeed;
}
hasTarget = hasTargetIn;
}
public void move(Point target) {
if (mPos.getX() != target.getX() + 3 && mPos.getY() != target.getY() + 3) {
this.mPos.x += mVelocityX;
this.mPos.y += mVelocityY;
}
}
Hier sind die Argumente, die ich auf das Verfahren gebe:
sprite.target(true, new Point(700,305));
sprite.move(new Point(700,305));
Aber dies erfordert mich den target.getX zum Ausgleich () um 3 in der move() -Methode, da die X-Werte zwischen 703 und 697 schwanken, wenn das Sprite die Position erreicht (also bleibt es einfach dort jitterlos ohne die Logik, die ich in der move() -Methode eingeschlossen habe). Gibt es einen besseren Weg, um sich an einem bestimmten Punkt zu bewegen und anzuhalten?