Keeping worldspace when parenting to elevator

Hey all. In my level, I have a first person character controller and I want it to be able to ride an elevator up and down smoothly. So far, I have it so that when I walk onto the elevator, I parent the character controller to the elevator so as to ensure smooth movement (i.e. not physics-based and jittery). But every time I do this, I end up with a problem where my character aims completely to the right and changes its scale a bit. I know how to fix the scale, but I’m still in the weeds about this weird rotation bug. I suspect it has something to do with this disparity between local and world coordinates, but I honestly have no idea and would appreciate any help y’all can give. Thanks so much!

How do you parent your object? Unity now has several ways to do so. Also your elevator object that you parent to shouldn’t have any scale in the first place. If the elevator model need to be scaled, add the model as a child to an empty gameobject. That way the actual elevator object stays unscaled.

If you use the new SetParent method the object should keep it’s worldspace position and rotation unless you pass “false” as second parameter. In addition Unity tries to compensate the scale, but depending on the kind of scaling that might not be possible. That’s why you shouldn’t scale the object that you parent your player to.