How to make player dive?

I’m making a 2D high-action platformer game, and I would like the player to be able to dive attack. What I want to happen is basically the player jumps out very far, and if your already moving, It will stop that part of the script and use the dive script to move. basically like how the diving works in Fall Guys: Ultimate Knockout. Could someone supply me with a script?

This is my code so you can work out a script using it:
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel.Design;
using UnityEngine;

public class PlayerController : MonoBehaviour
    public float speed;
    public float jumpForce;
    private float moveInput;
    public float checkRaduis;
    public float diveForce;
    public float diveSpeed;

    private bool facingRight = true;
    private bool isGrounded;

    private Rigidbody2D rb;
    public Transform groundCheck;
    public LayerMask WhatIsGround;

    public int extraJumps;

    void Start()
        rb = GetComponent<Rigidbody2D>();

    void FixedUpdate()
        //Checks if the player is grounded
        isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRaduis, WhatIsGround);

        //Moves the effing player
        moveInput = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);

        //Flips the player
        if(facingRight == false && moveInput > 0)
        else if(facingRight == true && moveInput < 0)

    void Update()
        //Resets Double jumps
        if (isGrounded == true)
            extraJumps = 1;

        //Makes player jump
        if(Input.GetButtonDown("Jump") && extraJumps > 0)
            rb.velocity = Vector2.up * jumpForce;

    void Flip()
        //Does some big brain math stuff to flip player
        facingRight = !facingRight;
        Vector3 Scaler = transform.localScale;
        Scaler.x *= -1;
        transform.localScale = Scaler;

Some ideas to start you off, hope its helpful.
I would create a reference to the dive script and within your dive script a public function that you can call from the script you posted. To stop movement you can use booleans and set it to true when you dive, then use it to check to make sure your not diving before you move. Why make diving on a seperate script? Why not just add a function to your current one?