It seems like the position variable you are using is getting assigned before the ladder has it's real position. cyberreality suggesting using the ladders node variables, rather than the self one you had made, but.
You can put that assignment into a function, and then use call deferred to call the function that makes the assignment. Then it should be updated with it's position.
Or, you could call that function instead from player, but it would be better to just fetch the nodes variables.