Hi,
I’m glad that you could get it working. First, let me answer your first question: drag a wire from your sphere collision object reference, and search for ‘get overlapping actors’. This function will return you an actor array containing all actors that are currently overlapping your sphere collision. You just have to iterate through that array using a ‘ForEachLoop’ and check every element by type casting if it as a door, enemy, etc and act accordingly.
Your Blueprint setup seems more or less fine, however I have a few suggestions. I noticed that two events can execute the same ‘Open Level’ node which is fine, but I encountered some issues with similar setup in the past, so I suggest you to use two separate ‘Open Level’ nodes instead for both events.
Another thing I noticed is that you have set your ‘CursorOverDoor’ variable to true in both cases (start overlap-end overlap), which might be just a small mistake.
Generally I would say that your setup is okay, and could work, but it isn’t the most efficient solution and it might be difficult to expand/improve the functionalities later. In my humble opinion, Blueprint Interfaces would be a great solution to your particular issue. You could create an ‘InteractWithPlayer’ interface function, implement that interface to all of your interactable classes, and implement the functions there. This way, you would only have to call that one function when the player interacts. Here is an introduction to BP Interfaces, if you are not familiar with them: link text
Hope this will help you a bit.