- Home /
 
               Question by 
               $$anonymous$$ · May 08, 2019 at 06:14 PM · 
                scripting problemdamagegun scriptguns  
              
 
              How to change the damage my gun does?
Hello, I would like to know how to change the damage of my gun according to a public int? If anyone can help please comment down bellow here is the gun script.
 using UnityEngine;
 using System.Collections;
 
 
 public class Gun1 : MonoBehaviour
 {
     private const int V = 3;
 
     //Decal
     public GameObject decalHit;
   public float projectileDestroyTimer = 5f;
 
 
 
 
   //Ámmo
   public int maxAmmoTotal = 30; // Max ammo to carry Example: 30
   public int maxAmmoInClipTotal = 5; // Max ammo total to be able to reload Example: 5
   public int curAmmo = 30; // Current reloadable ammo Example: 30
   public int ammoInClip = 8; // Current ammo in clip Example: 5
   private bool isReloading = false;
 
 
 
 
   //Animation
   public string fireAnimation; //Shoot animation
   public string clipEmptyAnim; //Clip empty animation
   public string reloadAnimation; //Reload animation
   public float reloadTime = 1f; // How long it takes to reload
   public Animator reloadAnimations;
   public Animator ClipEmptyAnimations;
 
 
 
 
   //GameObjects
   public GameObject weapon; //Needed for aiming
   public ParticleSystem muzzleflash;
   public Animator FireAnimation;
   public AudioSource GunSounds;
 
 
 
 
   //Raycast
   private RaycastHit rayHit;
   public float shootDistance = 200f;
 
 
 
 
   //Recoil
   private float defaultRecoil = 50f;
   public float recoil = 50f;
   public float recoilAiming = 10f;
 
 
   //Aim
   public Vector3 aimPos = Vector3.zero;
   private Vector3 defaultPos = Vector3.zero;
   public float smoothTime; //How long it takes to get to the aiming position
   private Vector3 dampVelocity;
   private bool aiming = false;
 
 
   //Audio
   private AudioSource audioSource; //Audio source
   public AudioClip fireSound; //Sound when shooting
   public AudioSource clipEmptySound; //Sound when clip is empty
   public AudioSource reloadSound; //Sound when reloading
 
   //Weapon
   public int hitDamage = 13;
   float LastTimeShot;
   public float TimeBetweenShots = 1;
   public float fireRate = 20f;
 
   private float nextTimeToFire = 0f;
 
 
   //Only for testing
   int removedAmmoRecently; //Only for testing
 
 
   void Start()
   {
     defaultPos = weapon.transform.localPosition;
     defaultRecoil = recoil;
     audioSource = GetComponent<AudioSource>();
   }
 
 
   void Update()
   {
     AimDownSight();
 
      if (Input.GetButton("Fire1") && Time.time >=nextTimeToFire)
         {
             nextTimeToFire = Time.time + 1f / fireRate;
             Shoot();
       
     }
     if(Input.GetButtonDown("Fire2") && !isReloading)
     {
       aiming = !aiming;
     }
 
 
     if (Input.GetKeyDown(KeyCode.R) && !isReloading)
     {
       StartCoroutine("Reload");
     }
   }
 
 
   void Shoot()
   {
     if(ammoInClip != 0 && !isReloading)
     {
       PlaySound(fireSound);
       GunSounds.Play();
       muzzleflash.Play();
       PlayAnimation(fireAnimation);
       GetComponent<Animator>().Play("FireAnimation");
       ammoInClip--;
       Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width/2f + Random.Range(-recoil, recoil), Screen.height/2f + Random.Range(-recoil, recoil), 0f));
       if (Physics.Raycast(ray, out rayHit, shootDistance))
       {
         GameObject decalClone = (GameObject)Instantiate(decalHit, rayHit.point, Quaternion.LookRotation(rayHit.normal, Vector3.forward));
         Destroy(decalClone, projectileDestroyTimer);
 
         DoDamage(rayHit);
       }
     }
     else{
       clipEmptySound.Play();
       GetComponent<Animator>().Play("ClipEmptyAnimation");
     }
     Debug.Log("Ammo: " + ammoInClip + "/" + curAmmo);
   }
 
 
   void DoDamage(RaycastHit hit)
   {
     if(hit.transform.tag == "Enemy")
     {
       if(hit.transform.GetComponent<EnemyHealth>()) //You can change EnemyHealth, to the name of the script that contains the health of the enemy
       {
         hit.transform.SendMessage("ApplyDamage", hitDamage, SendMessageOptions.DontRequireReceiver);
       }
       Debug.Log(hit.transform.name + " has been hit");
     }
   }
 
 
   IEnumerator Reload()
   {
     //If ammoInClip example 5 is equal or greater than  0 and ammoInClip(5) is lower than maxAmmoInClipTotal(The max amount of ammo that can be in a clip) and curAmmo(how much ammo you have like 5/30) is greater than 0
     if (ammoInClip >= 0 && ammoInClip < maxAmmoInClipTotal && curAmmo > 0)
     {
       isReloading = true;
       reloadSound.Play();
       GetComponent<Animator>().Play("reloadAnimations");
       yield return new WaitForSeconds(reloadTime);
       removedAmmoRecently = 0; //You can remove this line, it's only for testing.
       for (int i = 0; i < maxAmmoInClipTotal; i++)
       {
         if (ammoInClip == maxAmmoInClipTotal || curAmmo <= 0)
         {
           break;
         }
         else
         {
           ammoInClip++;
           curAmmo--;
           removedAmmoRecently++; //You can remove this line, it's only for testing. | To check how much ammo has been removed
         }
       }
       isReloading = false;
       Debug.Log("Removed " + removedAmmoRecently + " " + "ammo from pocket ammo. Ammo: " + ammoInClip + "/" + curAmmo); //You can remove this line, it's only for testing. | Prints out how much ammo that has been removed, ammo you have in clip, and how much ammo that is left
     }
     else
     {
       yield break;
     }
   }
 
 
   void PlayAnimation(string anim)
   {
     if (anim != "")
     {
       weapon.GetComponent<Animation>().Play(anim);
     }
   }
 
 
   void PlaySound(AudioClip clip)
   {
     if (clip != null)
     {
       audioSource.PlayOneShot(clip);
     }
   }
 
 
   void AimDownSight()
   {
     if(aiming && weapon.transform.localPosition.normalized != aimPos.normalized)
     {
       weapon.transform.localPosition = Vector3.SmoothDamp (weapon.transform.localPosition, aimPos, ref dampVelocity, smoothTime);
       Debug.Log ("Aiming");
       recoil = recoilAiming;
     }
 
 
     if(!aiming && weapon.transform.localPosition.normalized != defaultPos.normalized)
     {
       weapon.transform.localPosition = Vector3.SmoothDamp (weapon.transform.localPosition, defaultPos, ref dampVelocity, smoothTime);
       Debug.Log ("UnAiming");
       recoil = defaultRecoil;
     }
   }
 
 
   void OnGUI()
   {
     GUILayout.Label("Ammo: " + ammoInClip + "/" + curAmmo);
   }
 }
   
               Comment
              
 
               
              Answer by CentauriDev · May 08, 2019 at 06:51 PM
I dont understand you question so good, but if it is public, it is possible to change it from the inspector. Or else were it says 13 you can change it to an other value.
I would like to be able to change the amount of damage according to a public float or int. Does this help a little bit more?
Do you have another int and you the damage to be that?
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                