How to make game Object look at the direction it's moving in while using keys directly.

I’m making a game that uses a gravity system like Super Mario Galaxy. I tried using axes for movement but it didn’t work. How could I rotate my character relative to the direction it’s moving in while using keys directly for movement?
This is my script:

 var mvfrwrd = false;
            if (gameObject)
            {

                if (Input.GetKey(KeyCode.UpArrow))
                {
                    mvfrwrd = true;
                    if (mvfrwrd == true)
                    {
                        Rb.velocity += camera.transform.forward * MovementSpeed;
                    }
                }
                if (Input.GetKeyUp(KeyCode.UpArrow))
                {
                    Thread.Sleep(1);
                    Rb.velocity += Vector3.zero;
                    mvfrwrd = false;
                }
            }
            var mvbkwrd = false;
            if (gameObject)
            {

                if (Input.GetKey(KeyCode.DownArrow))
                {
                    mvbkwrd = true;
                    if (mvbkwrd == true)
                    {
                        Rb.velocity += -camera.transform.forward * MovementSpeed;
                    }
                    if (Input.GetKeyUp(KeyCode.DownArrow))
                    {
                        Thread.Sleep(1);
                        Rb.velocity += Vector3.zero;
                        mvbkwrd = false;
                    }
                }
                var mvlft = false;
                if (gameObject)
                {
                    if (Input.GetKey(KeyCode.LeftArrow))
                    {
                        mvlft = true;
                        if (mvlft == true)
                        {
                            Rb.velocity += -camera.transform.right * MovementSpeed;
                        }
                    }
                    if (Input.GetKeyUp(KeyCode.LeftArrow))
                    {
                        Thread.Sleep(1);
                        Rb.velocity += Vector3.zero;
                        mvbkwrd = false;
                    }
                }
                var mvrght = false;
                if (gameObject)
                {

                    if (Input.GetKey(KeyCode.RightArrow))
                    {
                        mvrght = true;
                        if (mvrght == true)
                        {
                            Rb.velocity += transform.right * MovementSpeed;
                        }
                    }
                    if (Input.GetKeyUp(KeyCode.RightArrow))
                    {
                        Thread.Sleep(1);
                        Rb.velocity += Vector3.zero;
                        mvbkwrd = false;
                    }
                }

I tried using Vector3.RotateTowards for left and right movement but since I’m using abnormal physics such as spherical gravity, my character acts glitchy and gets sent to the center of the planet when I try to move forward or backward using the left or right key to move left and right.

How could I fix this?

Your object has transform component on it.
Transform components have left/right/up/down/forward vectors. Those can be used as rotational axis with Transform.Rotate and Transform.RotateAround

https://docs.unity3d.com/ScriptReference/Transform.RotateAround.html

You can also use Quaternion.LookAt .
Or you could manually calculate required rotation by calculating angle via dotproduct between old and desired object heading, and then rotation axis via a cross product.