For flipping the player character you can use the SpriteRenderer component directly to flip the character without changing the scale.
private SpriteRenderer spriteRenderer;
void Awake()
{
spriteRenderer = GetComponent<SpriteRenderer>();
if (!spriteRenderer) Debug.LogError("Can't Find the Sprite Renderer");
}
void Update()
{
if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
{
spriteRenderer.flipX = truefalse;
}
else if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
{
spriteRenderer.flipX = true;
}
}
this will flip your character on the X axis and setting in to false will flip your character to the default side.
Alternatively, you can shoot the bullets in world space, you can read more about it here.
Basically by moving your bullets in world space they will move relative to the original (0,0,0) coordinates of unity and your bullets will not be effected by the scale or the position of the player.