yeah, i was gonna expand my answer with a blueprint example, but i got lazy. i have made a similar laser aiming system before, but i just used debug lines, instead of beams, but i don’t have that project on my computer anymore, so i couldn’t find an image of the finished blueprint.
since his image showed he could make beams, and i have no idea what kind of physics his projectiles will use, i just answered the unsolved part of his question, providing the math for bouncing off walls.
Velocity = Velocity - 2 * ( Velocity Dot SurfaceNormal ) * SurfaceNormal
i suggest using more than 2 beams, and making an array of locations, where each beam is made out of 2 of those locations. i would calculate this array by looping through some projectile physics math, to calculate a line trace, to detect walls for bouncing. every physics iteration, i would add another point, and every hit detection i would add an extra point, and change the velocity in the physics math using that reflection vector formula.
its not just hitting a wall that might change the direction, gravity on a projectile will make an arc, which should be made out of many points. each point in the list should be the end of one beam and the beginning of another, and this point data should be calculated for the whole laser in a separate step before updating the visuals for the beams.
this is kinda an expensive thing to make in blueprints, if you can calculate the list of points in C++, it will be far more efficient. then in blueprint, you can set dress those points with whatever you want, using beam particles, or scaled instance static meshes, or project the locations to render icons on the hud, etc… but this kind of code really belongs in c++, probably in a custom projectile movement component, or in a C++ blueprint function library.