How to listen to delegate

Yes, I proposed that solution since delegates are not universally listened to, they need to be referenced. Using an intermediate actor like the player character, like you propose, might be a good compromise.

AddDynamic is a macro so visual studio will try to make you use the function instead. Simply write RegisterActorDelegate.AddDynamic(character, ATopDownCharacter::Register);

Hope this helps.