Because ‘character’ blueprints tend to hang on one another - particularly while following the same target (think zombies swarming players) - it is often better Not to use MoveTo → a target actor.
Try – Get Actor Location of the target actor
Then Get Reachable Point in a radius around that actor (varying by the size of your characters)
And moveto that point rather than the actual character.
.
It is also a good idea if there is the potential for more than a small number of AIs to be moving in the same space to include an “Unstuck” timer.
- Set a boolean while the AI should be moving.
- Timer checks every ~ .5 seconds for that bool, and if it is set - gets the velocity of the actor and increments a counter if it should be moving but is not.
- (clearing the counter if it is moving of course)
Then any time the counter goes beyond a number reasonable for the given game - set a random point some distance away from the navigation goal and move there.
It helps with crowd clogging and the occasional odd bit of collision clutter.