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 greatwhiteshark17283 · Jun 25, 2013 at 08:05 PM · javascriptweaponswitch

Why doesn't this weapon switching script work

I made a script that changes a weapon every time a certain key is pressed. The script doesn't do anything. This is it:

 var weapon1 : GameObject;
 var weapon2 : GameObject;
 var weapon3 : GameObject;
 var keyToSwitch : String;
 private var weapon = 1;
 
 function Start(){
     weapon2.SetActive(false);
     weapon3.SetActive(false);
     weapon = 1;
 }
 function Update(){
     if(Input.GetKeyDown(keyToSwitch)){
         if(weapon == 1){
             weapon1.SetActive(false);
             weapon2.SetActive(true);
             weapon = 2;
         }
         if(weapon == 2){
             weapon2.SetActive(false);
             weapon3.SetActive(true);
             weapon = 3;
         }
         if(weapon == 3){
             weapon3.SetActive(false);
             weapon1.SetActive(true);
             weapon = 1;
         }
     }
 }
Comment
Add comment · Show 1
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 Em3rgency · Jun 25, 2013 at 08:57 PM 0
Share

Rewrite your start function to

 function Start(){
     weapon1.SetActive(true);
     weapon2.SetActive(false);
     weapon3.SetActive(false);
 }

There is no need to set weapon to 1 at start, as its already 1 at declaration. Now, if you set the key name correctly, this script should work properly, as in, it should switch the booleans to true/false as required. What exactly is not working?

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer Wiki

Answer by Oskar Lundqvist · Jun 25, 2013 at 08:58 PM

Hi! Firstly, is "keyToSwitch" set to a valid key? Are the weapons set properly in the inspector?

I would recommend using arrays for the weapons instead and setting the input key in the input manager.

Here's how i would write it:

     var weapons : GameObject[];  //An array of GameObjects to be set up in the inspector
     var currentWeapon = 0;
     
     function Update() {
         if(Input.GetButton("Switch Key") ) {
             
             weapons[currentWeapon].SetActive(false); // Deactivate the current weapon
             
             currentWeapon ++; // Change weapon
             
             // Make sure that the value of current weapon is no bigger than the amount of weapons
             if(currentWeapon >= weapons.Length){ 
                 currentWeapon = 0;
             }
             
             weapons[currentWeapon].SetActive(true); // Activate the new weapon
             
         }
     }
     `

I would suggest you look up the built in array if you arent familiar with it.

Happy game making! :)

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 greatwhiteshark17283 · Jun 25, 2013 at 09:21 PM 0
Share

The script works fine. Thanks!

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

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

Related Questions

Weapon pick up and switching script 2 Answers

best way to weapon swapping 0 Answers

Cycling through enum with key press 1 Answer

Weapon Switch Animations 1 Answer

Weapon Switching 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