Because parent.localPosition makes no sense, for one… The childs local is always (0,0,0) from parent, unless you offset it. So if player(parent) is at (123,0,789) in world space(which would be the same as it’s local), the child if right on top of him would have a local of (0,0,0) from parent. Because when using hierarchy of objects, that’s all they need to know.
Now am I saying that there would never be a use for a child object to give its world position? No, it might actually be needed in some cases, except yours…
Thinking on your whole setup, there’s no reason for you to have a child or parent move in relation to how the other moves. Unless you were making some real-physics based VR game like “Cliffhanger”. You only need one object(the player) and according to what surface he’s on moves at a set speed accordingly(or in bursts to pretend like he’s climbing).
You may be thinking of how animations make things “look like” they’re actually doing something, but there not. Animations are just pre-recorded mesh movements that only work in a case-by-case basis. So if your trying to approach this action in your game, applying real-life physics to a game, you’re gonna do nothing but give yourself headaches.
Trust me, I know, one of my projects is a human mesh that literally uses it’s feet to move, with contact of a load bearing foot. And moves it’s body in relation to it’s surroundings, along with it’s head, arms, and hands. It’s the most ambitious project I ever took on, and it’s been placed to the far back burner for now(due to headaches), lol…
But games really use simple logic, and the developer himself is a magician to make you think otherwise, when you see things act like they’re really thinking. It’s all pre-made, and recorded…
However, with how crazy AI is getting, it won’t be long before I can have AI run my human mesh, just like it’s a real boy!
But just keep it simple for now. 