• 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
1
Question by cptbobflop · Oct 14, 2012 at 03:07 PM · java

Gun Script Js

i am making a gun form my little fps game but i am not very good at scripting here is my script so far

 #pragma strict
 var bullet : Rigidbody;
 var power : float = 1500;
 var damage : float = 100;
 var reloadtime : float = 4;
 var magcount : int = 10;
 var magbulletcount : int = 21;
 var bulletcount : int = 0;
 
 
 function Start () {
 
   bulletcount = magbulletcount;  
 
 }
 
 function Update () {
 
          if (Input.GetButtonDown("Fire1")&& bulletcount > 0){
              var instance: Rigidbody = Instantiate(bullet, transform.position, transform.rotation) as Rigidbody;
              var fwd: Vector3 = transform.TransformDirection(Vector3.forward);
              instance.AddForce(fwd * power);
              bulletcount --;
                        
          
          }
 
 }

as you can see i have it shooting the bullet and when it has shot the number of bullets in the mag it stops firing but instead of it just stopping firing i want it to wait the reload time and take away 1 from the mag count. I dont know how to do this so please help. + any tutorials?

Comment
Add comment
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

3 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by aldonaletto · Oct 14, 2012 at 03:43 PM

You could wait for the reload time, then reload bulletcount and decrease magcount. This can be done in Update like this:

 var bullet : Rigidbody;
 var power : float = 1500;
 var damage : float = 100;
 var reloadtime : float = 4; // this reload time is too long!
 var magcount : int = 10;
 var magbulletcount : int = 21;
 var bulletcount : int = 0;
 
 private var reloadTimer: float = 0.0; // internal reload timer
 
 function Start () {
   bulletcount = magbulletcount;  
 }
 
 function Update(){
   if (reloadTimer > 0){ // if reloadTimer active...
     reloadTimer -= Time.deltaTime; // decrement it
     if (reloadTimer <= 0){ // if reloadTime ended...
       bulletcount = magbulletcount; // load a full clip...
       magcount--; // and decrement clip count
     }
   } 
   else // only shoot when reloadTimer not active
   if (Input.GetButtonDown("Fire1")&& bulletcount > 0){
     var instance: Rigidbody = Instantiate(bullet, transform.position, transform.rotation) as Rigidbody;
     var fwd: Vector3 = transform.TransformDirection(Vector3.forward);
     instance.AddForce(fwd * power);
     bulletcount --;
     if (bulletcount <= 0 && magcount > 0){
       // if run out of ammo but still have clips...
       reloadTimer = reloadtime; // activate reloadTimer
       // you can play reload sound or animation here
     }
   }
 }

Comment
Add comment · Show 1 · 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
avatar image Griffo · Oct 14, 2012 at 03:47 PM 0
Share

Aldo .. you beat me to it ..

avatar image
0

Answer by Griffo · Oct 14, 2012 at 03:47 PM

Not tested ..

 #pragma strict
 
 var bullet : Rigidbody;
 var power : float = 1500;
 var damage : float = 100;
 var reloadtime : float = 4;
 var magcount : int = 10;
 var magbulletcount : int = 21;
 var bulletcount : int = 0;
 
 private var reloading : boolean = false;
 
 function Start () {
 
   bulletcount = magbulletcount;  
 
 }
 
 function Update () {
 
 if(!reload && magcount > 0){
     fireWeapon();
 if(magcount == 0){
     print("Out of magazines .. go find some more");
         }
     }
 }
 
 function fireWeapon(){
 
 if (Input.GetButtonDown("Fire1") && bulletcount > 0){
     var instance: Rigidbody = Instantiate(bullet, transform.position, transform.rotation) as Rigidbody;
     var fwd: Vector3 = transform.TransformDirection(Vector3.forward);
     instance.AddForce(fwd * power);
     bulletcount --;
 if (bulletcount == 0){
     reload();
         }
     }
 }
 
 function reload(){
 
     reloading = true;
     magcount --;
     print("reloading weapon " + magcount + " Magazines left");
     yield WaitForSeconds(4.0); // wait for 4 seconds while the gun reloads
     reloading = false;
     bulletcount = magbulletcount;
 }
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
avatar image
0

Answer by lordrockit · Sep 09, 2013 at 11:16 PM

i have a question im using aldo's method so how would i display the # of clips left on screen

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

15 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 avatar image avatar image

Related Questions

Object moving on its own 0 Answers

Android build problem. 0 Answers

Unity and Java Programming Question 3 Answers

How to make Unity find JDK on my linux machine. 1 Answer

Left Click Once, Does An Action, Left Click Again, Does Another Action., 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