Transform position not being returned correctly

I’ve run into a weird issue. I’ve been trying to script a player rotation based projectile shooting mechanic. For this matter, I first added a “safe distance” vector to sum to the position of my player’s transform. Worked like a charm while shooting to the right, however shooting to the left always left my projectiles in a position close to my initial player’s transform position. Then I tried with the empty child trick, and still nothing.

Let it be clear that I’ve nailed the “shooting right” part, no problems at all. Now, when shooting left (or rotating 180º/-180º on the player’s y axis) my bullets always spawn in the same place, regardless of having that empty child as a spawn point for projectiles.

To better illustrate:
GIF about my issue

    public GameObject projectileSpawn;
    public GameObject projectilePrefab;
    GameObject projectileInstance;

	// Use this for initialization
	void Start () {

	}

    // Update is called once per frame
    void Update () {
        if (Input.GetKeyDown(KeyCode.LeftAlt) && projectilePrefab != null)
        {
            projectileInstance = Instantiate(projectilePrefab) as GameObject;
            Rigidbody rb = projectileInstance.GetComponent<Rigidbody>();
            if (transform.rotation.y == 0)
            {
                projectileInstance.transform.position = projectileSpawn.transform.position;
                rb.velocity = transform.right * 9;
            }

            if (transform.rotation.y == 180)
            {
                projectileInstance.transform.position = projectileSpawn.transform.position;
                rb.velocity = -transform.right * 9;
            }
        }
    }

I hope you can help me get to a fix for this. Thank you!

Welp, I feel dumb right now. Who knew I didn’t need to verify rotation at all, I just needed to check it once.
public GameObject projectileSpawn;
public GameObject projectilePrefab;
GameObject projectileInstance;

	// Use this for initialization
	void Start () {

	}

    // Update is called once per frame
    void Update () {
        if (Input.GetKeyDown(KeyCode.LeftAlt) && projectilePrefab != null)
        {
            projectileInstance = Instantiate(projectilePrefab) as GameObject;
            Rigidbody rb = projectileInstance.GetComponent<Rigidbody>();
            projectileInstance.transform.position = projectileSpawn.transform.position;
            rb.velocity = transform.right * 9;
        }
    }

I think you can lock this thread if you absolutely need to now.