There are two ways you can create a shooter. You can either child BP_N00dProjectilesShooterBase, or create your own with BPC_N00dProjectiles by adding the component to your own actor and calling its methods. If you do add the component in your own actor, see the shooter base for how we are implementing the logic.
For this example we will create a child of shooter to go over the features.
Create a child of BP_N00dProjectilesShooterBase and move it to n00dProjectilesExample
Create a child of BP_ShooterBase, call it BP_ShooterArrow, and move it into our newly created Shooters folder
Open it and add a Box collision component, call it Proxy
So we can see it in the test, flag HiddenInGame to disabled
On the construction script, set the box extent with a reference to ProxyExtent (a variable of base shooter)
Add an Arrow component and call it SpawnLocation
Create a new vector parameter and call it SpawnLoc and make it instance editable, reference it on SetRelativeLocation on the SpawnLocation component. This will allow us to move the box extent per instance.
Override GetSpawnLocation and reference the arrow component we created
On the event graph, call Begin or End overlap on the Proxy with the following script
Make sure its enabled, and define the arrow projectile under Projectile Classes
You can also set Enabled at runtime
Drag BP_ShooterArrow into the world and modify the SpawnLoc and the ProxyExtent
Press PIE. We are now being shot by the shooter.