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 NinjaRubberBand · Dec 25, 2013 at 08:41 PM · gameobjectboolean

Trigger script does not work

What it want this script i made, to do is: When i enter its collider my controls disable so i can't move. That activates a statement so when i have pressed "i" 50 times the controls gets back again.

But it does not work. When i enter the collider and my controls disable the "i" press does not work.

Can someone help?

 #pragma strict
 
 var taps = 0; 
 var tapNow = false;
 
 function OnTriggerEnter (other : Collider) {
  if(other.tag == "Player") 
  
  GameObject.Find( "First Person Controller" ).GetComponent(FPSInputController).enabled = false;
 
 GameObject.Find( "First Person Controller" ).GetComponent(CharacterMotor).enabled = false;
 
 tapNow = true;
 
 }
 
 function Activate () {
 
   if(tapNow == true);
 
 if(Input.GetKeyDown("i")) taps = taps+1;
 
 if(taps == 50);
 
 GameObject.Find( "First Person Controller" ).GetComponent(FPSInputController).enabled = true;
 
 GameObject.Find( "First Person Controller" ).GetComponent( CharacterMotor).enabled = true;
 
 }
 




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

Answer by Statement · Dec 25, 2013 at 09:35 PM

The code hides some issues that are not obvious unless you indent your code properly.

Let's have a look with an indented version of your code (it does the same thing).

 #pragma strict

 var taps = 0; 
 var tapNow = false;

 function OnTriggerEnter (other : Collider) {
     if(other.tag == "Player") // Test only branches for one statement.
         GameObject.Find( "First Person Controller" ).GetComponent(FPSInputController).enabled = false;
         
     GameObject.Find( "First Person Controller" ).GetComponent(CharacterMotor).enabled = false;
     tapNow = true;
 }

 function Activate () {
     if(tapNow == true); // Wrongly placed ;-sign
     
     if(Input.GetKeyDown("i")) 
         taps = taps + 1;

     if(taps == 50); // Wrongly placed ;-sign
     
     GameObject.Find( "First Person Controller" ).GetComponent(FPSInputController).enabled = true;
     GameObject.Find( "First Person Controller" ).GetComponent( CharacterMotor).enabled = true;
 }

There are a couple of issues that may cause problems. For one, you don't use bodies for your if-statements so you are only executing the next line of code if the condition is met, and the other lines are executed regardless.

Your if-statements in Activate have statement terminators ; which basically render the tests useless.

Here is a version that hopefully works better. As you see, I added bracers around the code in the test, forming a block of code. I also made a small refactoring (extracted a method for enabling or disabling the objects scripts).

 #pragma strict

 var taps = 0; 
 var tapNow = false;

 function OnTriggerEnter (other : Collider) {
     if(other.tag == "Player") 
     {
         EnableFirstPersonController(false);
         tapNow = true;
     }
 }

 function Activate () {
     if(tapNow && Input.GetKeyDown("i"))
     { 
         taps = taps + 1;
         if(taps == 50)
         {
             EnableFirstPersonController(true);
             tapNow = false;
         }
     }
 }
 
 function EnableFirstPersonController(state : boolean) {
     var fpsController = GameObject.Find( "First Person Controller" );
     fpsController.GetComponent(FPSInputController).enabled = state;
     fpsController.GetComponent(CharacterMotor).enabled = state;
 }
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 Statement · Dec 25, 2013 at 09:39 PM 0
Share

Also, I am not sure if you have something calling Activate. Perhaps this function should be called `Update` for the script to function properly.

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

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

Related Questions

The name 'Joystick' does not denote a valid type ('not found') 2 Answers

Boolean Not Changing 1 Answer

About Destructible 3d objects 1 Answer

Accesing another Script on gameObject and asking if it is true. 1 Answer

How to form copies of yourself that follow you when you walk? (2D Platformer) 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