Passing in false for bCollisionNoFail causes the engine to call UWorld::FindTeleportSpot() if the initial locaiton fails due to collision, and it tries a sequence of adjusted positions (through UWorld::EncrachingBlockingGeometry()) to find a non-overlapping spot.