Smooth moving player object

Hi, i would like to know how to achieve a smooth moving effect on a player character on a 2D project, this would mean when the player presses a movement key, the character starts to speed up and slow down once the player stops pressing a movement key; here is the code

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float moveSpeed = 5f;
    public Rigidbody2D rb;
    public Weapon weapon;

    Vector2 moveDirection;
    Vector2 mousePosition;

    void Update()
    {
        float moveX = Input.GetAxisRaw("Horizontal");
        float moveY = Input.GetAxisRaw("Vertical");

        //weapon
        if (Input.GetMouseButtonDown(0))
        {
            weapon.Fire();
        }

        moveDirection = new Vector2(moveX, moveY).normalized;
        mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    }

    private void FixedUpdate()
    {
        rb.velocity = new Vector2(moveDirection.x * moveSpeed, moveDirection.y * moveSpeed);

        //rotation
        Vector2 aimDirection = mousePosition - rb.position;
        float aimAngle = Mathf.Atan2(aimDirection.y, aimDirection.x) * Mathf.Rad2Deg - 90f;
        rb.rotation = aimAngle;
    }
}

On line 31, try “rb.velocity = new Vector2(moveDirection.x X (moveSpeed X Time.deltaTime), moveDirection.y X (moveSpeed X Time.deltaTime));”

make sure to clamp moveSpeed to whatever max speed value you want.
“if (moveSpeed >= maxSpeed) {moveSpeed = maxSpeed;}”