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!
Answer by Bunny83 · Dec 14, 2016 at 01:56 PM
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.
Hey, thanks so much man! I ended up making an empty object with a scale and rotation of (1,1,1) and that did the trick. Thanks again!
Your answer
Follow this Question
Related Questions
How to access camera Dont Clear in camera clear flags using c# 1 Answer
UI element attached to Camera Coordinates 2 Answers
Camera rotate X degree based on player rotate 0 Answers
Stuttering nav Mesh Agent movement when i move the character 0 Answers
How to move camera with Input.GetAxis() and my camera view direction?!! 1 Answer