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 cargo1983 · Oct 21, 2014 at 03:07 AM · javascriptbooleannot workinggundraw

Simple gun draw script not working

I'm writing a simple script for my FPS exercise so my character draws his weapon by clicking the right mouse button, and then puts it away with another click of the right mouse button. I have the first part working, but haven't managed to get the character to put away the weapon again.

The Javascript code I'm using is very simple, and linked to an animator.

 #pragma strict
 
 var Gun : GameObject;
 var GunDrawn = false;
 
 
 function Start () {}
 
 function Update () {
 
     if(GunDrawn && Input.GetMouseButtonDown(1)) {
         
         Gun.GetComponent(Animator).SetBool("GunOut", false);
         Gun.GetComponent(AudioSource).enabled = false;
         GunDrawn = false;
         
         }
         
     if(!GunDrawn && Input.GetMouseButtonDown(1)){
 
         Gun.GetComponent(Animator).SetBool("GunOut", true);
         Gun.GetComponent(AudioSource).enabled = true;
         GunDrawn = true;
         
         }
 
 }

When I run the game and right-click the correct animation plays and I can see the inspector marks the variable GunDrawn as "true", but when I right-click again nothing happens. Is this an issue with formatting? I'm sure there's a simple explanation and any help would be much appreciated.

Thanks!

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 Phantomized · Oct 21, 2014 at 08:51 AM

It's because when you set the gunDrawn to "false" in the first conditional statement, you allow it to jump right into the conditional statement after that where it will be set as true again instantly. This often happens when the same input will do different things depending on the situation. An easy way around this is to use a boolean like:

 var pressed : boolean = false;

and then in the conditional statements ask for a condition such as

  if(!pressed && GunDrawn && Input.GetMouseButtonDown(1)) {
      pressed = true;
      etcera...

and then at the end of the update method:

 pressed = false;

Comment
Add comment · Show 2 · 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 cargo1983 · Oct 21, 2014 at 09:34 AM 0
Share

Thank you very much - that worked well.

avatar image Phantomized · Oct 21, 2014 at 09:51 AM 0
Share

You're welcome. :) If you are satisfied with the answer, please mark it as accepted, so people browsing the question queue can visually see that you don't need help with this topic anymore. :)

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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

One use per level question 1 Answer

Get Component Errors 1 Answer

Help with gun scripting!? 1 Answer

Controlled Automatic Fire Rate (RayCasting) 2 Answers

separate script to reload. 0 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