Hey there @mankyo0807! Welcome to the community! So the default scene root is basically the core of the actor. Think of it as the center point for the local space of an actor.
The reason it likely wasn’t working before is that your hat is most likely physically simulated. When an object is physically simulated, it detaches from any parent object above it so it can fall and conform to gravity and not be bound by a parent. In the first case, your scene root is the core of the actor. So if your hat separates from it, then none of your blueprint logic will be with the static mesh (the hat) it will remain on the root. That’s why if you make the static mesh the root, it magically starts working, because the hat isn’t detaching from the actor because it is now the root/core of the actor.