public bool Fix()
        {
            var vec = _root.Vector + _mid.Vector;

            if (vec.magnitude < _root.Vector.magnitude + _mid.Vector.magnitude)
            {
                // not need fix
                return(false);
            }

            var go = Context.DicGuideObject()[_root.Transform];

            if (go == null || !(go.IsArm() || go.IsLeg()))
            {
                return(false);
            }

            if (go.IsArm() && go.transformTarget.name.Contains("_L"))
            {
                _mid.Rotate(_mid.Transform.up, 1f);
            }
            else if (go.IsArm() && go.transformTarget.name.Contains("_R"))
            {
                _mid.Rotate(_mid.Transform.up, -1f);
            }
            else if (go.IsLeg())
            {
                _mid.Rotate(Vector3.left, -1f);
            }

            return(true);
        }