解决Unity旋转改变局部坐标问题

摘要:当我们制作游戏角色控制器的时候,经常会编写角色的旋转,但我们运用欧拉角、四元数旋转的时候,经常会出现按我们所不希望的局部坐标旋转,又或者想要在角度的世界坐标系和自身坐标系之间灵活转换使用,为此我写下此文希望对大家有用!

运用:四元数的乘积规律

乘积规律:当四元数(欧拉角化了)左乘*物体的当前rotation则物体按世界坐标旋转;

当四元数右乘*物体当前rotation则物体按自身坐标旋转

            float mouse_x = Input.GetAxis("Mouse X");
            float mouse_y = Input.GetAxis("Mouse Y");
            Quaternion qx = Quaternion.Euler(0, mouse_x, 0);
            Quaternion qy = Quaternion.Euler(-mouse_y, 0, 0);

            //记住当前乘积顺序
            transform.rotation = qx*transform.rotation ;//绕世界y坐标旋转

            transform.rotation = transform.rotation*qy;//绕自身坐标x旋转
            
            //对比

            transform.rotation = transform.rotation*qx ;//绕自身坐标y坐标旋转

            transform.rotation = qy*transform.rotation;//绕世界坐标x旋转

猜你喜欢

转载自blog.csdn.net/m0_64810555/article/details/125648290