They probably wont move correctly after positioning, but the solution to that could also be similar to the initial positioning problem to begin with. That little Event Script above would position each Follower based on position in the "Caterpillar". Thus, since map position corresponds with Follower ID, another solution could be another Event Script
(After the Cutscene)
for follower in $game_party.followers
follower.move_right if follower.id == 1
follower.move_up if follower.id == 2
follower.move_left if follower.id == 3
end
Again, I dont have VXA so I have no clue how their follower system works so this code is probably not going to reference each Follower as an individual Object correctly. Once Follower Object paths are determined, sorting may or may not be needed. If followers are stored in an Array, then probably not, but if stored in a Hash, then sort will probably be needed.
Alternatively, we could entirely skip the Move commands. I worked on a Caterpillar system (similar to Followers) where a script call would move all the Caterpillar Actors (Party Members) to the location of the player. The script call was simply "cat_to_player". That script call wont work in VXA. Im not sure if VXA has anything similar to move each Follower to the location of the Player.
Another alternative would be to simply set the X and Y coordinates to that of the Player. This would allow movement to the Players location to animate.
for follower in $game_party.followers
follower.x = $game_player.x
follower.y = $game_player.y
end
A third alternative would be to "Teleport" the player back to a gathered position. The drawback here is that there wouldnt be any animation so one would probably just fade to black while Teleportation occurs. Basically, fade to black, teleport the Player to their current location, then fade back in. This will most likely automatically reposition the Followers to the location of the Player.
Last alternative would be to write a script that creates some new movement commands for the Followers.
class Game_Interpreter
def collect_followers
for follower in $game_party.followers
follower.x = $game_player.x
follower.y = $game_player.y
follower.direction = $game_player.direction
end
end
def scatter_followers
for i in 0...$game_party.followers.size + 1
j = i
# Turn until facing a Scattered Position
while j > 0
follower.turn_left_90
end
follower.move_forward
follower.direction = $game_player.direction
end
end
Then, in an Event Script, just call either "collect_followers" or "scatter_followers". This should hopefully allow for both Animations of "Collecting" or "Scattering" where each Follower would face the same direction as the player does once the animation completes. Scatter would require that Collect be called, and wait several frames for everyone to get on their marks.
To Collect:
@>Script: collect_followers
To Scatter:
@>Script: collect_followers
@>Wait: 30 Frames
@>Script: scatter_followers