- Home /
Question by
MILLIMEDIA · Nov 01, 2019 at 06:04 AM ·
fpsgunfire
**[SOLVED]** Gun not firing after certain amount of shots
for some reason my gun script stops firing bullets after a certain amount of shots. This amount seems to be fixed but I don't really count becuase it is a fairly large number. Apart from that it all works fine. Here is the gun script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Gun : MonoBehaviour
{
public Camera Cam;
public float range = Mathf.Infinity;
public GameObject HitParticles;
public GameObject Flash;
public float TotalPause;
public float Lighttime;
public bool shooting;
public AudioSource Audio;
public AudioClip Shots;
public float Zoom;
private float NormalFOV;
public int Damage;
public Animator animator;
public bool scope;
public GameObject Graphic;
public float Cooldown;
public Slider Energy;
public int PowerUsage;
// Start is called before the first frame update
void OnEnable()
{
shooting = false;
NormalFOV = Cam.fieldOfView;
}
// Update is called once per frame
void Update()
{
Debug.Log("Update");
if (Input.GetButton("Fire1") && !shooting && PowerUsage <= Energy.value)
{
Audio.clip = Shots;
Audio.Play();
Energy.value -= PowerUsage;
StartCoroutine(Shoot());
}
if (Input.GetButtonDown("Fire2"))
{
StartCoroutine(ZoomIn(0.5403233f));
}
if(Input.GetButtonUp("Fire2"))
{
animator.SetBool("isZoomed", false);
Graphic.SetActive(true);
Cam.fieldOfView = NormalFOV;
}
}
IEnumerator Shoot()
{
Debug.Log("Assert Dominance");
RaycastHit hit;
shooting = true;
if (Physics.Raycast(Cam.transform.position, Cam.transform.forward, out hit, range))
{
if (hit.transform.CompareTag("Enemy"))
{
hit.transform.gameObject.GetComponent<Enemy>().Kill(Damage);
}
Debug.Log("Shots Fired");
Instantiate(HitParticles, hit.point, Quaternion.identity);
}
Flash.SetActive(true);
yield return new WaitForSeconds(Lighttime);
Flash.SetActive(false);
yield return new WaitForSeconds(TotalPause - Lighttime);
shooting = false;
this.enabled = false;
this.enabled = true;
}
IEnumerator ZoomIn(float ZoomTime)
{
animator.SetBool("isZoomed", true);
yield return new WaitForSeconds(ZoomTime);
if (scope)
{
Graphic.SetActive(false);
}
Cam.fieldOfView = Zoom;
}
}
Comment
Best Answer
Answer by MILLIMEDIA · Nov 02, 2019 at 09:43 AM
Fixed it! It was just stupid me forgetting I did something and had nothing to do with that script.
facepalm
Your answer
Follow this Question
Related Questions
FPS - Looking Down The Barrel 2 Answers
Automatic gun shoot sound 2 Answers
replacing guns and knife 0 Answers
Gun Shooting bug 2 Answers
Bullet only goes in a single way 0 Answers