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); }