No worries, while I have a few years worth of programming experience I’m still far from being a pro lol
You have to understand that no matter where you put your code, it just does what is written there, once.
In your case, you seem to use an overlap event with a collision capsule, then use your DashFromPlayer event to trigger your dash.
This is automatic because the overlap event is the one thing that triggers this chain of code.
The way I do my code is that I ask myself what I am actually doing. Most of my coding errors come from me thinking that I’m doing something that I’m actually not doing. In your case, just ask yourself what actually happens with your overlap and your projectile. If you call your dash event when an overlap happens: of course it will get triggered once the overlap happens.
Ask yourself what it is you want to do: you want to shoot multiple enemies, then dash to them one after another once you give the command. That means that something like an overlap event is not allowed to trigger your dash, because you have no control over it anymore. Rather, you want to shoot them first and then you want to check which enemies you have actually hit. Maybe there are three enemies but you have only hit two of them? That means you need some kind of status to check whether they are eligible to dash to them or not. Since it’s two choices, use a boolean.
Then, you want this to be triggered only when you give your input, meaning, everything starts once you press something. That means your first step in using your multiple dashes is an input. You can define it yourself in your character or character controller blueprint. Then, after you pressed your key, you want to look at which enemies you want to dash to. Only those eligible, meaning those that have their boolean value set to true (those that have been hit by your projectile). Then you have to go through all of the eligible enemies one after another. You basically have to do what you want to do with a single enemy with all of them. However, the delay problematic comes into play, so you need some kind of fix for this. The for-loop with delay works, but it’s a constant value, which is not ideal. This means that no matter whether you actually reach your target or not, no matter the distance, the next impulse comes. That is something you have to tweak for it to be really good.
But anyway, since your problem is a little more basic, I made a small example that should show you how it should work in general:
This is in the character blueprint. So, what happens is the following: once you press left CTRL, the engine retrieves all actors of type Enemy. Then, each one of those is sampled: is his boolean value true? If so, use the dash event and give this event the Enemy to dash to as parameter, so we can calculate the direction we want to go. The way you calculate this direction is always the same for each enemy, so we don’t care about the actual values; that’s why it’s okay to use each individual enemy one after another. After the dash is over, we return to where we were before and end up in a Delay of 0.2 seconds. This doesn’t work because of the for-loop, but you should get the point and be able to implement a for-loop with a working delay based on the article I’ve sent you.
Keep in mind this is a brute force approach, as we get each and every single enemy in existence, which is quite costly for performance (it doesn’t matter for your game, but it’s something you should keep in mind). It would be better to add or remove the eligible enemies to an array of sorts, so you only have to go through a much smaller subset of enemies. Also, there currently is no order to the multiple dashes. Currently, you would simply dash to the enemy in the order the engine checks them in. It would be better to sort the array first based on, for example, distance to the player, so that you always dash to the nearest eligible one. You can add inputs to events by pressing left click on it, then adding them in the details tab.