Search code examples
javagame-physics

Java Game - moving an object in a straight line to another point


Here is what I have so far:

int vx = (playerx - x);
    int vy = (playery - y);

    double distance = Math.sqrt((vx * vx) + (vy * vy));

    double doublex = ((vx / distance));
    double doubley = ((vy / distance));

    dx = (int) Math.floor(doublex + 0.5);
    dy = (int) Math.floor(doubley + 0.5);

    x += dx;
    y += dy;

I just want x and y to move straight towards playerx and playery but it moves only at a slope of 0, 1, or undefined.


Solution

  • I suspect it because you x and y are int and you have moving such a short distance that you will only be (1, 1), (1, 0) or (0, 1).

    You need to allow it to move further that 1, or use a type which more resolution. e.g. double.

    BTW: Instead of using Math.floor I believe a better choice is

    dx = (int) Math.round(doublex);