Why does my gun shoot 1 bullet and use 2 ammo? [C#]

So, I have my gun script and it shoots bullets where my mouse courser is, but sometimes it uses 2 ammo per shoot, which I don’t want. I don’t know where the problem it. Could someone help me out?

Code:
using UnityEngine;
using System.Collections;

public class Shoot : MonoBehaviour
{
[Range (0, 50)]
public float Change_Despawn_Bullet;
[Range(0, 50)]
public float Bullet_Forward_Force;
[Range(0, 50)]
public float WaitTimeRelaod;
[Range(0, 100)]
public int ClipSize_Number = 12;
[Range(0, 100)]
public int AmmoSize_Number = 36;

public Transform playerTransform;
public float offset = 90;
private GameObject tempGameObject;
public GameObject Bullet;
public GameObject Bullet_Spawner;

private Damage_Heal ammo_clip;

private void Start()
{
    ammo_clip = GetComponent<Damage_Heal>();

    tempGameObject = new GameObject();
    ammo_clip.UpdateAmmo_ClipBar();
    ammo_clip.AmmoSize = AmmoSize_Number;
    ammo_clip.ClipSize = ClipSize_Number;

    if (playerTransform == null)
    {
        playerTransform = GameObject.FindWithTag("Player").transform;
    }
}

public void Update()
{
    ammo_clip.UpdateAmmo_ClipBar();

    if (Input.GetKeyDown("r"))
    {
        StartCoroutine("Reload_Animation");    
    }
}

public void FixedUpdate()
{
    RaycastHit hit = new RaycastHit();
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

    if ((Physics.Raycast(ray, out hit)) &&
        (Bullet_Spawner != null) &&
        (Bullet != null) &&
        (ammo_clip != null) &&
        (ammo_clip.ClipSize > 0) &&
        (Input.GetMouseButtonDown(0)))
    {
        Gun_Controll(hit);
    }
}

IEnumerator Reload_Animation()
{
    while ((ammo_clip != null) && ammo_clip.ClipSize >= 0 && ammo_clip.ClipSize < 12 && ammo_clip.AmmoSize > 0)
    {
        yield return new WaitForSeconds(WaitTimeRelaod);

        ammo_clip.AmmoSize -= 1;
        ammo_clip.ClipSize += 1;
        ammo_clip.UpdateAmmo_ClipBar();
    }
}

public void Gun_Controll(RaycastHit hit)
{
    if (Input.GetMouseButtonDown(0))
    {
        tempGameObject.transform.LookAt(hit.point);

        GameObject Temporary_Bullet_Handler;
        Temporary_Bullet_Handler = Instantiate(Bullet, Bullet_Spawner.transform.position, Bullet_Spawner.transform.rotation) as GameObject;
        Temporary_Bullet_Handler.transform.Rotate(Vector3.left * 90);

        Rigidbody Temporary_RigidBody;
        Temporary_RigidBody = Temporary_Bullet_Handler.GetComponent<Rigidbody>();
        Temporary_RigidBody.AddForce(tempGameObject.transform.forward * Bullet_Forward_Force * 100);
        tempGameObject.transform.LookAt(hit.point);
        Destroy(Temporary_Bullet_Handler, Change_Despawn_Bullet);

        ammo_clip.ClipSize -= 1;
        ammo_clip.UpdateAmmo_ClipBar();

    }
}

}

Here is the game file:

[84306-battle-blocks-export.zip|84306]

@Mavina

can you help again?

If it’s occurring at a constant rate (as in it always does -2 shots), if the clip size is a float, just use -0.5 instead of -1…

Not sure if it will work but try putting your code on Update() instead of FixedUpdate().
Also, after you do that, you will have to remove the “if (Input.GetMouseButtonDown(0))” from Gun_controll function, since there’s already an IF checking the button.

I remember a tutorial video where the teacher said that you should prefer to use GetButtonDown(“Fire1”) instead of GetMouseButtonDown(0). You can try that too