• Create Account

Need scary sound effects or creepy audio loops for your next horror-themed game? Check out Highscore Vol.3 - The Horror Edition in our marketplace. 50 sounds and 10 loops for only \$9.99!

### #ActualL. Spiro

Posted 14 February 2013 - 04:13 PM

You can’t do it properly that way due to floating-point imprecision. You need to pass the actual target location or the actual offset to the target location in pixels.

player.move(50, 50, duration);

[50,50] here is the offset.
The player then calculates the final location in pixels and stores it as endPos.

direction is then calculated by the player class as ||[50,50]|| (normalize the input X and Y vector).
Distance is of course the length of the vector [50,50]. These are not passed to the player but calculated by the player class.

Then the player calculates how fast to move per second.
moveVector = (direction * distance) / duration;

After this, each logical update (which should use a fixed time-step) moveVector is added to the player’s position after being multiplied by the amount of time that has passed.

When the amount of passed time exceeds duration, the player’s position is specifically set to endPos to avoid floating-point and time-related errors.

L. Spiro

### #1L. Spiro

Posted 14 February 2013 - 04:12 PM

You can’t do it properly that way due to floating-point imprecision. You need to pass the actual target location or the actual offset to the target location in pixels.

player.move(50, 50, duration);

[50,50] here is the offset.
The player then calculates the final location in pixels and stores it as endPos.

direction is then calculated by the player class as ||[50,50]|| (normalize the input X and Y vector).
Distance is of course the length of the vector [50,50]. These are not passed to the player but calculated by the player class.

Then the player calculates how fast to move per second.
moveVector = (direction * distance) / duration;

After this, each frame moveVector is added to the player’s position after being multiplied by the amount of time that has passed.

When the amount of passed time exceeds duration, the player’s position is specifically set to endPos to avoid floating-point and time-related errors.

L. Spiro

PARTNERS