Я работаю над игрой, которая использует спрайты в двухмерном пространстве, и я пытаюсь найти лучший способ остановиться в точном месте.Лучший способ остановиться в точном месте?
Я получил следующее работать:
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;
}
}
Вот аргументы я придающие метода:
sprite.target(true, new Point(700,305));
sprite.move(new Point(700,305));
Но это требует от меня, чтобы компенсировать target.getX () на 3 в методе move(), поскольку значения X колеблются между 703 и 697, когда спрайт достигает положения (таким образом, он просто остается дрожащим без логики, которую я включил в метод move()). Есть ли лучший способ двигаться и останавливаться в точном месте?