Interaction with world general questions

I’m building simple interaction (opening doors, opening chests, pickups, etc) in the world and I’m wondering philosophically what might be best practice. So I can think of a few ways to do it. One, put a collision sphere around the player character and check for overlap events. Two, put a collision sphere around interactable objects and check for overlap events. Three, line trace from camera to test if looking at something. Four, for point and click, mouse cursor overlap events. I’ve sort of landed on doing number two for a third person game but would love to hear insights and advice on better practices.

Collision sphere/box etc on the interact object. When the player overlaps use Blueprint Interfaces to communicate between the object and the player.