When I usually make damage system, I create a hit box and a heart box (I create an Area2D and call a function in that script that owns the area via area.owner).
But the more I think about it, the more I think it's a waste of memory (I have multiple attack animations, so I add an Area2D for each)
Alternatively, you can access the default collision of Kinematicbody2D, but my game is only using body collision to express more realistically using YSort, i.e. it does not cover the whole, but only applies to the legs.
Would it be better to just access another area through Area2D, which is the way we are doing now, call the owner and call the appropriate function? or is there a special and elegant way?