Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by HuskyPanda213 · Apr 04, 2013 at 06:42 PM · timerreload

Reload Courutine Taking To Much Ammo

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;
 }

}

Comment
Add comment · Show 2
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image AlucardJay · Apr 04, 2013 at 06:42 PM 0
Share

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

avatar image Dracorat · Apr 04, 2013 at 08:11 PM 0
Share

By 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.)

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by LyanApps · Apr 04, 2013 at 07:51 PM

If I had to guess, it looks like you use Input.GetButton instead of Input.GetButtonDown. This means for each frame that your button is pressed it will continue to grab the next clip. If you use GetButtonDown, then it will only call that coroutine the first frame that your button is pressed.

This is a good tutorial on the phases of a button press: http://unity3d.com/learn/tutorials/modules/beginner/scripting/get-button-and-get-key

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

13 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Buying Ammo HELP 0 Answers

How to add the needed amount to the AmmoCount (current ammo)? 1 Answer

Time.deltaTime stops counting up, after the Player is destroyed 1 Answer

Reloading Help 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges