Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 ChompIV · Dec 29, 2017 at 05:23 AM · inputcollidersontriggerentertriggersif-statements

Can't call GetKey inside OnTriggerEnter?

I want it so when I collide with the "stuff", the beeper will go off, and if I press "E" the beeper will go off and a black screen will appear. I have the beeper working (besides that it doesn't turn off when I press "E"), and I have a black screen but it doesn't work during my script, it's like I cant have the GetKey function in the code? I'm still learning and this is really confusing me, any explanation is much appreciated, here's my code:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class Metal : MonoBehaviour
 {
     public GameObject sound;
     public GameObject black;
 
     void OnTriggerEnter(Collider other)
     {
         if (other.gameObject.tag == "stuff")
         {
             if (Input.GetKey(KeyCode.E))
             {
                 black.SetActive(true);
                 sound.SetActive(false);
             }
                 sound.SetActive(true);
 
 
         } else{
 
             sound.SetActive(false);
             black.SetActive(false);
         }
     }
 
         void OnTriggerExit(Collider other) { 
     
             if (other.gameObject.tag == "stuff")
         {
                 sound.SetActive(false);
                 black.SetActive(false);
 
         }
             else
             {
                 sound.SetActive(false);
                 black.SetActive(false);
       }
    }
 }
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

2 Replies

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

Answer by Dragate · Dec 29, 2017 at 07:40 AM

OnTriggerEnter() will run once when trigger collision happens. It doesn't matter if you press E before or after trigger collision because method simply doesn't run at those frames. If you hold E pressed during collision, your code will work. If you want to enable E button functionality while inside the collider, you'll have to check for it in OnTriggerStay().

  public GameObject sound;
  public GameObject black;
 
  void OnTriggerEnter(Collider other){
      if (other.gameObject.tag == "stuff"){
          sound.SetActive(true);
      }else{
          sound.SetActive(false);
          black.SetActive(false);
      }
  }
 
  void OnTriggerStay(Collider other){
     if(Input.GetKeyDown(KeyCode.E) && other.gameObject.tag == "stuff"){
           black.SetActive(true);
           sound.SetActive(false);
     }
  }
  
  void OnTriggerExit(Collider other){ 
       sound.SetActive(false);
       black.SetActive(false);
  }
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 ChompIV · Dec 29, 2017 at 08:49 AM 0
Share

Worked! Thanks

avatar image
0

Answer by Kingofweirdos · Dec 29, 2017 at 05:45 AM

Have you tried input.getkeydown? Also you could try putting the key command first and then check whether the object is stuff or not. Have you tried a debug.log of the OnTriggerEnter to see if your collider is working or not. Also try to run a debug.log on the input command and also the find gameobject to test if it is actually finding the gameobject and responding to you pressing e/

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 ChompIV · Dec 29, 2017 at 06:47 AM 0
Share

I have it so when I collide, the sound plays, and what I want is to have it so when I collide, the sound plays AND IF i press e, the screen goes black (aka black.SetActive(true);). And I tired Get$$anonymous$$eyDown and no luck :(. I cant switch the two if statements because I want it to beep on collision, not only when I press $$anonymous$$ Any more tips? And thanks for the help!

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

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

Related Questions

Hello, How would one make a particlesystem activate triggers? (hopefully I worded that right) 0 Answers

OntriggerEnter condition with two colliders 2 Answers

On Trigger enters being called a frame late 1 Answer

How do I prevent multiple triggers using OnTriggerEnter? 1 Answer

OnTriggerEnter question 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