The issue I'm having is that now that I'm moving 4 pixels per step rather than 32 pixels, touch events no longer trigger when I'm dashing.
This is because the way last moving is determined is to check whether @x != @real_x and @y != @real_y.
The assumption with the default scripts is that because you're moving one tile at a time, your (x, y) coords are integers.
When you move from (0,1) to (0,2), your real_y value looks like this during each update
(0, 1.25) # move(0, 1.5) # move(0, 1.75) # move(0, 2) # doneNow, the update occurs every frame, so whenever you move, it will update.Once you're no longer moving, it will start updating nonmoving, which presumably means you're not moving (ie: standing still)
So there is a very specific case where last_moving will be set to true, and it will be passed into update_nonmoving, and that is exactly when you WERE moving, but then you reached your destination. In my example, it is when you move from 1.75 to 2.
So, the problem is not the order in which they are placed, it's the way "last_moving" is checked in the first place.
At least for me, @x and @real_x are both equal when I'm dashing because each animation step moves 0.25 tiles per update, and I just happen to be moving at 0.25 tiles per step.
Here are the relevant methods
Code: def update last_real_x = @real_x last_real_y = @real_y last_moving = moving? move_by_input super update_scroll(last_real_x, last_real_y) update_vehicle update_nonmoving(last_moving) unless moving? @followers.update end def moving? @real_x != @x || @real_y != @y end def update_nonmoving(last_moving) return if $game_map.interpreter.running? if last_moving $game_party.on_player_walk return if check_touch_event end if movable? && Input.trigger?(:C) return if get_on_off_vehicle return if check_action_event end update_encounter if last_moving end
I'm just not sure if the specific case I mentioned is important to consider.