# Shoot Projectile on the direction of where the gun is facing

I Have a gun that spawn a projectile that bounces of colliders (a Ricochet). It is supposed to be shooting to the direction of where the gun is facing but what I am getting is the projectile always shoots 45 degrees upwards to the right I know this is because of my constant declared vector 2.

I tried using Vector2.up but it prevents the projectile to do the ricochet effect because it always wants to go upwards.

How should I implement those things? I just want the projectile to shoot to the direction where my gun is facing and bounces of on colliders. This is a 2D game btw. I have my codes attached below so you can see. Thanks!

Projectile Script:

`````` private Rigidbody2D rb;

public static bool canMove = true;

void Start()
{
rb = GetComponent<Rigidbody2D>();
rb.velocity = new Vector2(10f, 10f);
}

void Update()
{
//transform.Translate(Vector2.up * speed * Time.deltaTime);
if (canMove)
{
rb.isKinematic = false;

}
else if (!canMove)
{
rb.isKinematic = true;
}
}
``````

Gun Script:

`````` float offset = -90f;

public GameObject projectile;
public Transform shotPoint;

void Start()
{

}

void Update()
{
Vector3 diff = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
float rotZ = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, rotZ + offset);

if (Input.GetMouseButtonDown(0))
{
Instantiate(projectile, shotPoint.position, Quaternion.identity);
Projectile.canMove = true;
}
}
``````

dont use the transform of the gun. make a “barrel” child game object and use its transform. you can play with it until the direction feels/looks right