Firing with the mouse 2D.

Hello,
I have a top down 2 dimensional game and all i want to know why my code isn’t working when I play the game I know there may be something wrong with the code but, the player has to face the mouse at all times and the player fires in the mouse direction. This is my code:

using UnityEngine;
using System.Collections;

public class PlayerShooting : MonoBehaviour
{

    public Rigidbody2D bulletPrefab;
    public float attackSpeed = 0.5f;
    public float coolDown;
    public float bulletSpeed = 500;
    public float yValue = 1f; // Used to make it look like it's shot from the gun itself (offset)
    public float xValue = 0.2f; // Same as above

    // Update is called once per frame
    void Start()
    {
        
    }
    void Update()
    {
        
        if (Time.time >= coolDown)
        {
            if (Input.GetMouseButtonDown("Fire1"))
            {
                Fire();
            }
        }
    }

    void Fire()
    {
        //Rigidbody2D bPrefab = Instantiate(bulletPrefab,transform.position,Quaternion.identity) as Rigidbody2D;

        Rigidbody2D bPrefab = Instantiate(bulletPrefab, new Vector3(transform.position.x + xValue, transform.position.y + yValue, transform.position.z), transform.rotation) as Rigidbody2D;
        bPrefab.GetComponent<Rigidbody2D>().AddForce(transform.up * bulletSpeed);

        coolDown = Time.time + attackSpeed;
    }
}

Any help is much appreciated.

Change Upate to FixedUpdate and recheck.

if (Input.GetMouseButtonDown(“Fire1”)) should be turned into either

A. if(Input.GetMouseButtonDown(0))

B. if(Input.GetButtonDown("Fire1))

Input.GetMouseButtonDown() takes an integer represented by the following:
0 - left mouse button
1 - right mouse button
2 - middle click

So, your script should use Input.GetMouseButtonDown(0) instead of GetMouseButtonDown(“Fire1”).

Here’s the reference to the Unity Scripting API: