First Bullet in old location when rotating

GIF of the issue I'm having

In my top-down shooter, I've combined my look and fire function to the right joystick. I'm having this issue where the first bullet fires in the old orientation before it follows the rotation. The script is attached to my player (main circle) with the gun, crosshair (smaller circle), and fire point objects are its children.

In the linked gif, when I move the right-joystick left, it first fires a bullet to the right (original position) before following the rotation of the player. I want it to fire once the rotation has been complete.

This is the script that handles the rotating the player gameobject:

{
    Vector2 lookInput = playerInput.Player.Look.ReadValue<Vector2>();

    rotate = Vector3.zero;
    rotate.x = lookInput.x;
    rotate.y = lookInput.y;

    // Checks if right joystick has moved
    if (rotate != Vector3.zero)
    {
        // Handles rotation
        rotate.Normalize();
        if (rotate.x >= 0 && rotate.y >= -1 && rotate.y < 0)
        {
            angle = Vector2.SignedAngle(Vector2.down, rotate);
            myRigidBody.MoveRotation(Quaternion.Euler(0, 0, angle));
        }
        else if (rotate.x >= 0 && rotate.y >= 0 && rotate.y < 1)
        {
            angle = Vector2.SignedAngle(Vector2.right, rotate) + 90;
            myRigidBody.MoveRotation(Quaternion.Euler(0, 0, angle));
        }
        else if (rotate.x <= 0 && rotate.y > 0 && rotate.y <= 1)
        {
            angle = Vector2.SignedAngle(Vector2.up, rotate) + 180;
            myRigidBody.MoveRotation(Quaternion.Euler(0, 0, angle));
        }
        else
        {
            angle = Vector2.SignedAngle(Vector2.left, rotate) + 270;
            myRigidBody.MoveRotation(Quaternion.Euler(0, 0, angle));
        }

        // Fires Bullet based on fireRate
        if (Time.time > nextFire)
        {
            Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
            nextFire = Time.time + 1 / fireRate;
        }
    }
}

The start function of my bullet script:

{
    playerRigidBody.velocity = transform.up * speed * -1;
    StartCoroutine(DestroyCo());
}

Not fully sure on what you’re asking, but if you mean the bullet stays right where it was instantiated? it’s because nothing is updating to tell it to move. I would debug(or use print() is preferred) what the bullet is saying after being fired. If print shows up in the log that the velocity is (0,0) then you’ll know to have it work in the Update method. Not too sure when it comes to 2D/3D physics, but personally in 3D I use transform.Translate(vector3), instead of AddForce or Velocity