If you're trying to intercept a known curved path it just comes down to algebra, e.g. solve for the line intercepting the parabola.
However if you're talking about adaptive things like steering behaviours, you can't guarantee interception because their trajectory can change at any moment. I think that the best you can do is to cheat a little and ask the enemies what their current path is. General flow below:
- Estimate travel time for projectile to reach enemy
- Estimate enemy position on spline at that time
- Go back to step 1 as many times as desired with new enemy position
Note that you can still miss if they recalculate their path after you shoot.
Edit: pseudocode below
estimated_enemy_pos = current_enemy_pos
for i equals 1 to some_number
difference = estimated_enemy_pos - gun_pos
distance = difference.magnitude
time_to_hit = distance / bullet_speed
estimated_enemy_pos = spline_pos(time_to_hit)
shoot(estimated_enemy_pos)