It's tricky, I wouldn't have thought 20 objects would slow down with this For Each event.
It does seem laid out as best as it can, as the "for each" needs to be there to individually check each Shooter against the family, which may be different for each shooter.
Typically it's best to try and design game to be kinda "functional", meaning: Does your game really need to be checking alllll the time for all shooter objects to aquire a target? Or could this be lowered a lot more by including some conditions above the "for each" condition, such as "is onscreen" if you have a big layout with screen scrolling, or maybe designing a way to "disable" shooters that are too far away and therefore lighten the cpu usage of this for each loop.
P.S. I see you post a few times asking for help so wanted to suggest: There's an unofficial Discord for Construct, with help section for both c2 and c3, tends to get a good mix of replies quite quickly and sometimes from many people giving their ideas and thoughts (depending on who recognises the issue and such!).
discord.gg/construct-community-116497549237551109