using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; public class enemyGun : MonoBehaviour { public GameObject bullet; /// /// gun stats /// public int magSize; public int damage; public float timeBtwShots; public float range; public float reloadTime; public int bulletsPerFire; public bool automaticFire; /// /// gun status /// private bool reloading; private bool shooting; private bool readyToShot; private int bulletsLeft; /// /// Refrencing /// [SerializeField] Transform fpsCam; public Transform bulletSpawn; public bool allowInvoke = true; [SerializeField] private GameObject mag; void Awake() { bulletsLeft = magSize; readyToShot = true; } public void Shoot() { if (readyToShot && !reloading && bulletsLeft > 0) { Debug.Log("Bang"); readyToShot=false; GameObject currentBullet = Instantiate( bullet, bulletSpawn.position, Quaternion.identity ); currentBullet.GetComponent().damage=damage; currentBullet .GetComponent() .AddForce(transform.forward * range, ForceMode.Impulse); bulletsLeft--; if (allowInvoke) { Invoke("ResetShot", timeBtwShots); allowInvoke = false; } } } void Update() { if(bulletsLeft == 0) { Reload(); } } private void ResetShot() { //Allow shooting and invoking again readyToShot = true; allowInvoke = true; } public void Reload() { if (bulletsLeft < magSize && !reloading) { Debug.Log("reload"); reloading = true; readyToShot = false; Invoke("Reloaded", reloadTime); mag.SetActive(false); } } void Reloaded() { reloading = false; readyToShot = true; bulletsLeft = magSize; mag.SetActive(true); } }