Beispiel #1
0
        public static void SetLocalToParentMatrix(Transform transform, Matrix4x4 localToParentMatrix)
        {
            var pos   = Matrix4x4Utility.GetPosition(localToParentMatrix);
            var rot   = Matrix4x4Utility.GetRotation(localToParentMatrix);
            var scale = new Vector3();

            var right = Matrix4x4Utility.GetRight(localToParentMatrix);

            scale.x = Vector3.Dot(rot * Vector3.right, right);

            var up = Matrix4x4Utility.GetUp(localToParentMatrix);

            scale.y = Vector3.Dot(rot * Vector3.up, up);

            var forward = Matrix4x4Utility.GetForward(localToParentMatrix);

            scale.z = Vector3.Dot(rot * Vector3.forward, forward);

            transform.localPosition = pos;
            transform.localRotation = rot;
            transform.localScale    = scale;
        }