EDIT
I use UnregisterComponent on ProjectileMovement component to stop the projectile from moving, and set the collision to NoCollision, since the projectile could still be moved and hit the enemy themselves if it’s not set to NoCollision
You don’t need to initialize a socket for that. I’ve disabled the collisions of projectiles on the capsule collider and set the character mesh to block them. After that just attach the component like this:
Unfortunately, the Hit.BoneName always have an empty result, that’s why I’m initializing a socket, anyway I’m using SnapToTarget to achieve my goal. It works for smaller enemy, but when facing a big enemy like picture above, the projectile also scaled into target size, which is kind of expected behavior from snapping but not like the result I’m hoping for
Hit.BoneName is empty because you are using the Capsule Collider to detect the hit, and that doesn’t have bones. You have to disable the collision with projectiles on the Capsule Collider and set it up on the Skeletal Mesh so it can fill the Hit.BoneName with the closest bone.
As you can see the capsule collider is blocking projectiles. Set the profile to Pawn and change it again to Custom and just change the projectile channel to ignore. Then make sure the mesh is blocking projectiles and the projectile blocks pawns and you should be good