Hello, In my fps im trying to make a reload. But when I test it instead of taking 1 extra ammo or clip, it takes 2 or more. Instead of one. How can i fix this.
heres my code its not the whole script Though:
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour{
public string Weapon1;
public string Weapon2;
public GameObject MP7;
public GameObjectMakarov
public int CurrentPrimaryAmmo;
public int CurrentPrimaryAmmoClip;
public int CurrentPrimaryClipMax = 30;
public int CurrentSecondaryAmmo;
public int CurrentSecondaryAmmoClip;
public int CurrentSecondaryClipMax = 7;
public float WeaponReloadTime = 2f;
public void Start(){
Weapon1 = MP7;
Weapon2 = Makarov;
MP7.SetActive(true);
Makarov.SetActive(false);
CurrentPrimaryAmmo = PlayerPrefs.GetInt(“CurrentPrimaryAmmo”);
CurrentSecondaryAmmo = PlayerPrefs.GetInt(“CurrentSecondaryAmmo”);
CurrentPrimaryClip = PlayerPrefs.GetInt(“CurrentPrimaryClip”);
CurrentSecondaryClip = PlayerPrefs.GetInt(“CurrentSecondaryClip”);
}
void Update(){
if(EquipedWeapon == “Weapon1”){
if(CurrentPrimaryClip != CurrentPrimaryMaxClip){
if(Input.GetButton(“Reload”)){
StartCoroutine(“Reload1”,WeaponReloadTime);
}
}
}
if(EquipedWeapon == “Weapon2”){
if(CurrentSecondaryClip != CurrentSecondaryMaxClip){
if(Input.GetButton(“Reload”)){
StartCoroutine(“Reload2”,WeaponReloadTime);
}
}
}
}
IEnumerator Reload1(float WeaponReloadTime){
if(EquipedWeapon == "Weapon1"){
yield return new WaitForSeconds(WeaponReloadTime);
CurrentPrimaryClip = CurrentPrimaryMaxClip;
PlayerPrefs.SetInt("CurrentPrimaryClip", CurrentPrimaryClip);
CurrentPrimaryAmmo --;
PlayerPrefs.SetInt("CurrentPrimaryAmmo", CurrentPrimaryAmmo);
}
}
IEnumerator Reload2(float WeaponReloadTime){
if(EquipedWeapon == "Weapon2"){
yield return new WaitForSeconds(WeaponReloadTime);
CurrentSecondaryClip = CurrentSecondaryMaxClip;
PlayerPrefs.SetInt("CurrentSecondaryClip", CurrentSecondaryClip);
CurrentSecondaryAmmo --;
PlayerPrefs.SetInt("CurrentSecondaryAmmo", CurrentSecondaryAmmo);
}
ReloadTimer = WeaponReloadTime;
}
}
For any help, please format your code. You can do this by highlighting all your code, then clicking the 10101 button at the top of the edit window. http://video.unity3d.com/video/7720450/tutorials-using-unity-answers
– AlucardJayBy the way, you should look in to Interfaces. It'll stop you from having to write things like two reload routines. (Weapons would be an interface for example.)
– Dracorat