private Vector3 GetHandTargetPosition(Vector3 posStart, Vector3 posTarget, float step) { Vector3 pos = Vector3.Lerp(posStart, posTarget, step); int insideCircle = MathFuncs.IsInsideCircle( pos.x, pos.y, pc.lengthForeArm, pc.arm_back.position.x, pc.arm_back.position.y, pc.lengthBackArm ); if (insideCircle == -1 || insideCircle == 1) { float d = insideCircle == -1 ? pc.lengthForeArm - pc.lengthBackArm + 0.1f : pc.lengthForeArm + pc.lengthBackArm - 0.1f; Vector3 dir = new Vector3(pos.x - pc.arm_back.position.x, pos.y - pc.arm_back.position.y, 0); return(dir.normalized * d + pc.arm_back.position); } return(pos); }