- Home /
              This question was 
             closed Dec 21, 2018 at 01:53 AM by 
             el-mas-pro-470 for the following reason: 
             
 
            Nobody answers the question (Again)
 
               Question by 
               el-mas-pro-470 · Dec 20, 2018 at 07:21 PM · 
                gameweaponkeyreloadweapon system  
              
 
              Reload with keypress work bad!
I have made a line of code that makes pressing the R key the gun reloads, but it works very poorly and surrealistically, it passes ammo (Current Ammo) and has no trigger limit, does anyone know anything? Thank you
 using UnityEngine;
 using System.Collections;
 
 public class WEAPONTEST : MonoBehaviour {
     
     public float Damage = 0f;
     public float Range = 0f;
     public float ImpactForce = 0f;
     public float FireRate = 0f;
     
     public int MaxAmmo = 0;
     public int TotalAmmo = 0;
     public int CurrentAmmo;
     public float ReloadTime = 0;
     private bool IsReloading = false;
     
     public Camera FPScam;
     public ParticleEmitter MuzzleFlash;
     public GameObject HitEffect;
     
     private float NextTimeToFire = 0f;
     
     public GameObject ReloadObject;
     public GameObject ReloadGUI;
     public AudioClip ShootSound;
     
     void Start()
     {
         CurrentAmmo = MaxAmmo;
     }
     
     void OnEnable()
     {
         IsReloading = false;
     }
     
     void Update () {
         
         if (TotalAmmo < 0){
             CurrentAmmo = 0;
             return;
         }
         
         if(IsReloading)
             return;
         
         if(Input.GetKeyDown(KeyCode.R))
         {    
             StartCoroutine(Reload());
             return;
         }
         
         if(Input.GetButton("Fire1") && Time.time >= NextTimeToFire)
         {
             NextTimeToFire = Time.time + 1f/FireRate;
             Shoot();
         }
     }
     
     IEnumerator Reload()
     {
         IsReloading = true;
         Debug.Log("Reloading...");
         ReloadObject.SetActive(false);
         ReloadGUI.SetActive(true);
         
         yield return new WaitForSeconds(ReloadTime - 0.25f);
         
         ReloadGUI.SetActive(false);
         ReloadObject.SetActive(true);
         
         TotalAmmo -= MaxAmmo;
         CurrentAmmo = MaxAmmo;
         IsReloading = false;
     }
     
     void Shoot()
     {
         MuzzleFlash.Emit();
         audio.Play();
         audio.clip = ShootSound;
         
         CurrentAmmo--;
         
         RaycastHit hit;
         if (Physics.Raycast(FPScam.transform.position, FPScam.transform.forward, out hit, Range))
         {
             Debug.Log(hit.transform.name);
             
             Target target = hit.transform.GetComponent<Target>();
             if(target != null)
             {        
                 target.TakeDamage(Damage);
             }
             
             if(hit.rigidbody != null)
             {
                 hit.rigidbody.AddForce(-hit.normal * ImpactForce);
             }
             
             Instantiate(HitEffect, hit.point, Quaternion.LookRotation(hit.normal));
         }    
     } 
 } 
               Comment
              
 
               
              Follow this Question
Related Questions
How do I stop my weapon from firing while reloading? 2 Answers
Can't set an int from seperate script 1 Answer
Reload manually in raycast? 1 Answer
Getting Score Each Time Key is Destroyed 1 Answer
Weapon reload timer problem. 2 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                