Making an object move in the direction the player is "facing"

Hello, I am making a simple rpg and on the overworld you can cast spells. I am currently working on a fireball, but when it appears, it claims to be pointing in the direction i want in the editor, but it always goes downwards. Here is my script.

            if (Overworldfireshot == true)
            {
                fireball.SetActive(true);
                rb2d.velocity = transform.forward * speed;
            }
            if (Input.GetKey("w"))
            {
                fireball.transform.LookAt(t1.transform);
            }
            if (Input.GetKey("a"))
            {
                fireball.transform.LookAt(t2.transform);
            }
            if (Input.GetKey("s"))
            {
                fireball.transform.LookAt(t3.transform);
            }
            if (Input.GetKey("d"))
            {
                fireball.transform.LookAt(t4.transform);
            }

t1, t2, t3, t4 are all one unit away from the player and the fireballs starting location in the four directions. If a question like this already has been answered, please link me to as I cannot find one. Thanks!

In the Scene view make sure the Blue Arrow (x Axis) isnt point Down. Transfrom.forward moves forward on the Blue Arrow.

another problem, this is the new code I am trying,

playerpos.x = 0;
        playerpos.y = 0;
        playerpos.z = 0;

if (Overworldfireshot == true)
            {
                Instantiate(fireball, playerpos, playerrot);
                rb2d.velocity = transform.forward * speed;
                Overworldfireshot = false;
            }
            if(Input.GetKey("w"))
            {
                playerrot.x = 180;
                playerrot.y = 0;
                playerrot.z = 0;
            }
            if (Input.GetKey("a"))
            {
                playerrot.x = 0;
                playerrot.y = 0;
                playerrot.z = 90;
            }
            if (Input.GetKey("s"))
            {
                playerrot.x = 0;
                playerrot.y = 0;
                playerrot.z = 180;
            }
            if (Input.GetKey("d"))
            {
                playerrot.x = 0;
                playerrot.y = 0;
                playerrot.z = 270;
            }

but the prefab is not being a child of the player, how do I do that?
Still having it only go down despite best efforts.