My apologies for the late reply.
I doublechecked, and bStartPenetrating is returning true for every object in the array.
I have tried implementing UBodySetup::GetClosestPointAndNormal(), but the function is giving me a warning when being called (“LogPhysics:Warning: GetClosestPointAndNormalImpl ClosestDist for BodySetup BodySetup /Game/Geometry/Meshes/1M_Cube.1M_Cube:BodySetup_5 is coming back as FLT_MAX.”). This is how I implemented it;
FVector NewImpactPoint, NewImpactNormal;
if (UBodySetup* BodySetup = HitResults[HitIndex].GetComponent()->GetBodySetup())
{
BodySetup->GetClosestPointAndNormal(DamageOrigin, HitResults[HitIndex].GetComponent()->GetComponentTransform(), NewImpactPoint, NewImpactNormal);
DrawDebugPoint(DamageCauser->GetWorld(), NewImpactPoint, 20.f, FColor::Blue, false, 4.f);
}