I had to do this for a weapon on a current project-
Add a raycast or spherecast on the dart thats firing in its forward direction- use the cast to get the hitObject, hitPoint and hitNormal-
Parent the dart to the hitObject and use the hitPoint and hitNormal to attach and align it to where it hit on the surface of the object-
Instead of parenting you could also despawn/destroy the dart on impact after getting the variables you need- then use the hitPoint etc to spawn a new dart parented to the object on its surface-