Blueprint 'currency' pickup

Hi everyone,

I’m trying to teach myself basic scripting knowledge, through blueprints. I would like some insight into something I have created, as I don’t fully understand the knowledge despite making it work.

I followed some tutorials, including the inventory series on the official YT channel. Near the end, I wanted to create something myself that wasn’t part of the tutorial, to test my knowledge.

I added a ‘currency’ status in my HUD, through adding some text block and linking the actual value to a function. I made it so that the function requests a variable that should represent the currency of my character. After that, I wanted to have a pickup that would, on collision, add value to that currency and destroy itself. Now I got this working, but I had to copy some blueprints from some other example, and don’t quite get why and what it does. Here is the BluePrint:

Now, initially my set-up was different (posted below). The set-up above casts to my character_3rd person (the controller), but the one below also does that through a variable that references to this blueprint / controller. Why doesn’t the bottom version work? Also, the ‘cast to’ node in the above version requires an ‘object’. I linked this to the “Other Actor” on the begin overlap by looking at different blueprints, but I don’t actually understand what this means (I presume it’s because that’s the ‘other actor’ I’m trying to communicate with through this BluePrint). Could someone explain to me why this has to be linked there?

Hopefully that wasn’t too long / unclear. Thanks in advance!