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 icelated · Aug 24, 2012 at 11:57 PM · arrayfpsweapons

Weapon switching using array

Okay, i currently have 2 guns(ak47, 9mm) attached to the first person controller. They have animations. Show, hide,reload,etc..

Now, i can basically get them to switch by following the fps tutorial. However, i want to be able to use an array so later on i can manage the weapons better(pick up and drop weapons) and not switch a weapon currently equipped.

So switching the weapon like this works perfectly without the array.

 transform.GetChild(i).gameObject.SetActiveRecursively(false);
 weapons[i].gameObject.SetActiveRecursively(true);

However, when i use an array they wont switch and both guns show on play. Something that doesnt happen using transform.

I did assign both guns in the inspection for the array so they should contain the gun objects.

 var weapons : GameObject[];
 var selectedWeapon : int;
 var handgunHide : Animation;
 var handgunShow : Animation;
 
 var AK47Hide : Animation;
 var AK47Show : Animation;
 
 
 function Start () {
 SelectWeapon(0);
 }
 
 function Update () {
 
 
 if(Input.GetKeyDown("1"))
 {
 
 SelectWeapon(0);
 selectedWeapon = 0;
 
 //handgunHide.animation.Play("Hide");
 //AK47Show.animation.Play("Show");
 }
 
 else if(Input.GetKeyDown("2"))
 {
 SelectWeapon(1);
 selectedWeapon = 1;
 
 //handgunShow.animation.Play("Show");
 
 //AK47Hide.animation.Play("Hide");
 }
 
 }
 
 function SelectWeapon(index : int)
 {
 
 for(var i =0; i < weapons.Length; i++)
 //transform.childCount; i++)
 {
 if(i == index)
 {
 weapons[i].gameObject.SetActiveRecursively(false);
 //transform.GetChild(i).gameObject.SetActiveRecursively(true);
 }
 else{
 weapons[i].gameObject.SetActiveRecursively(true);
 //transform.GetChild(i).gameObject.SetActiveRecursively(false);
 }
 
 }
 }

I also tried to no avail

 weapons[i].SetActiveRecursively(true);

if i dont use the array it works perfectly but if i do it wont work and both guns show. What could i do? I am perfectly fine using C# also.

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

1 Reply

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

Answer by fafase · Aug 25, 2012 at 12:04 AM

You could try:

 function SelectWeapon(index : int){
   for(var obj:GameObject in weapons)obj.SetActiveRecursively(false);
   weapons[index].SetActiveRecursively(true);
 }

Put them all off and only put back on the chosen one.

Comment
Add comment · Show 3 · 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 icelated · Aug 25, 2012 at 12:12 AM 0
Share

I tried it but both guns show on play and no switching. Thanks though.

avatar image fafase · Aug 25, 2012 at 06:47 AM 0
Share

It could be something related somewhere else. $$anonymous$$aybe in the weapon scripts

avatar image icelated · Aug 26, 2012 at 04:35 AM 0
Share

I got it working. Wheni added the guns to the array i was adding the prefabs from the project not from hierarchy.

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

8 People are following this question.

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

Related Questions

A node in a childnode? 1 Answer

FPS gun animation problems 0 Answers

Fps Aiming Script help 2 Answers

FPS Weapon inventory script help 0 Answers

C# Set Current Array GameObject to Active 1 Answer


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