GameMaker path_positionprevious

M

mdbussen

Guest
I am either using the path_positionprevious variable incorrectly, or it is not working how it should.

I have an instance that I have given a path (using mp_grid) and as it is traveling along its path I want it to "look ahead" and see if there is going to be a collision, because I am going to have multiple instances following paths from point to point and I want them to be able to intelligently avoid each other. My idea for how to do this was to "look ahead" a discrete number of steps. In order to do this, I have to determine the "step size" in terms of the path position, so that I can then use the path_get_x and path_get_y to get the upcoming x/y location of the instance and check for collisions using place_empty. So I have the following code in order to get the step size:

Code:
var path_step = path_position - path_positionprevious;

// check to see if there will be a collision if the character moves to this location
// we will look ahead 5 steps because otherwise there may not be sufficient time to course-correct
var return_val = false;
for (var i = 0; i <= 5; i++){
   var next_x = path_get_x(path, path_position + path_step * i);
   var next_y = path_get_y(path, path_position + path_step * i);
   return_val = return_val or !place_empty(next_x, next_y);
}
However, my code didn't seem to be working as intended. no matter how much I increased the number of steps in the "look ahead" (from 5 up to 30), it didn't seem to make a difference. The instance wouldn't course-correct until it had already collided. So I did some checking and what is happening is that the path_step variable is always evaluating to 0, because path_position and path_positionprevious are always the same. EVEN when I can SEE in the debug printout that the path_position in the previous step was 0.98 (for example), both path_position and path_positionprevious are 0.99.

Am I using this instance variable incorrectly, or is it bugged somehow?
 
I

icuurd12b42

Guest
check if path_position and previous are the same... like x/y_previous only have a valid previous value after the step event... so your code would not work if it's in the step event or any event before that

_previous variables are only valid from the collision event, the end step through the draw events
 
M

mdbussen

Guest
check if path_position and previous are the same... like x/y_previous only have a valid previous value after the step event... so your code would not work if it's in the step event or any event before that

_previous variables are only valid from the collision event, the end step through the draw events
Thank you! This was the root of my problem. I moved the code to the end_step event and it is now working appropriately :)
 
Top