Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
12 Jun 22 - 14 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 /
  • Help Room /
avatar image
0
Question by jamiecorkhill5 · Feb 12, 2018 at 05:03 PM · c#keyboardkeypresskeyboard input

How to detect a keyboard key held down?

On every even click of the space bar, my gameobject translates on a 30 degree vector up and to the right. On every odd click of the space bar, my gameobject translates on a 30 degree vector up and to the left. How can I make is so that when the space bar is held down (rather than just clicked) the gameobject move straight up, on a 90 degree angle?

Thank you.

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
2

Answer by yummy81 · Feb 13, 2018 at 10:54 AM

I'm not sure whether this is what you want, but try to play with this code. It's only for Spacebar key. With each press you move alternately left or right, and when you hold the spacebar a little bit longer (longer than timeSpan variable) then you move on a 90 degree angle:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class MyScript : MonoBehaviour
 {
     public float timeSpan = 0.3f;
     private bool even;
     private float time;
     
     private void Update()
     {
         if (Input.GetKey(KeyCode.Space))
         {
             time += Time.deltaTime;
             if (time > timeSpan) Debug.Log("90 degree");
         }
         if (Input.GetKeyDown(KeyCode.Space))
         {
             if (even)
             {
                 Debug.Log("30 degree vector up and to the right");
             }
             else
             {
                 Debug.Log("30 degree vector up and to the left");
             }
             even ^= true;
         }
         if (Input.GetKeyUp(KeyCode.Space))
         {
             time = 0f;
         }
     }
 }
Comment
Add comment · Show 5 · 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 jamiecorkhill5 · Feb 13, 2018 at 04:23 PM 0
Share

@piotrek_81 Thank you. Your code does indeed allow me to detect long presses. The problem is, the gameobject still translates on one of the oblique vectors until the timer variable gets above 0.3. I have even lowered it to 0.1, and it still moves ever so slightly left or write until the time limit is exceeded. You can see the code below inside Update():

  if (Input.Get$$anonymous$$ey($$anonymous$$eyCode.Space))
         {
             time += Time.deltaTime;
             if (time > timeSpan)
             {
                 translateVector = Quaternion.Euler(0, 0, 0) * Vector3.up * Time.deltaTime * speed;
             }
         }
 
         if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.Space))
         {
             counter++;
         }
 
         if (time < timeSpan)
         {
 
             if (counter % 2 == 0)
             {
                 translateVector = Quaternion.Euler(0, 0, angle) * Vector3.right * Time.deltaTime * speed;
             }
             else
             {
                 translateVector = Quaternion.Euler(0, 0, -angle) * Vector3.left * Time.deltaTime * speed;
             }
         }
 
         if (Input.Get$$anonymous$$eyUp($$anonymous$$eyCode.Space))
         {
             time = 0f;
         }
 
         transform.position += translateVector;
     }
avatar image yummy81 jamiecorkhill5 · Feb 13, 2018 at 07:14 PM 0
Share

@jamiecorkhill5 And what do you think about it now?

     public float speed = 3f;
     public float timeSpan = 0.1f;
     private float time;
     private int counter;
     private float angle = 30f;
     private Vector3 translateVector;
     
     private void Awake()
     {
         translateVector = Quaternion.Euler(0, 0, angle) * Vector3.right;
     }
     
     private void Update()
     {
         if (Input.Get$$anonymous$$ey($$anonymous$$eyCode.Space))
         {
             time += Time.deltaTime;
         }
 
         if (time > timeSpan)
         {
             translateVector = Quaternion.Euler(0, 0, 0) * Vector3.up;
         }
         
         if (Input.Get$$anonymous$$eyUp($$anonymous$$eyCode.Space))
         {
             counter++;        
             if (counter % 2 == 0)
             {
                 translateVector = Quaternion.Euler(0, 0, angle) * Vector3.right;
             }
             else
             {
                 translateVector = Quaternion.Euler(0, 0, -angle) * Vector3.left;
             }
             time = 0f;
         }
 
         transform.position += translateVector * Time.deltaTime * speed;
     }
 
 
avatar image jamiecorkhill5 yummy81 · Feb 14, 2018 at 02:24 AM 0
Share

@piotrek_81 Thank you very much. The code is beautiful and works very well. However, there is one small thing which I am not sure is very fixable.

When you click the space bar (just a tap and not a long hold), sometimes, not every time, the gameobject moves straight ever so slightly just before moving on the oblique vector. Do you have any ideas?

I am most grateful for your help.

Show more comments
avatar image
1

Answer by UnityMooCow · Feb 12, 2018 at 07:05 PM

 if (Input.GetKey("space")) {
             print("Space held");
 }


Add this to your update function, replacing the print function with your code for moving. I don't know the translation at an angle code off the top of my head, but it sounds like you'll just need to replace the 30 with 90.

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 jamiecorkhill5 · Feb 12, 2018 at 07:14 PM 0
Share

@Unity$$anonymous$$ooCow Thank you, but that code will run the second the key is pressed. I am looking to change the vector to 90 degrees when the key is held down rather than just pressed.

On every even click of a key or tap on the screen, we move up and to the right. On every odd click of a key or tap on the screen, we move up and to the left. I am looking to move 90 degrees up with no x or z movement when the key or screen is held down for an elongated period of time.

avatar image UnityMooCow jamiecorkhill5 · Feb 13, 2018 at 10:03 AM 0
Share

So if I understand this right, if you tap the spacebar, it will excecute code based on the press number, but if held for a short length of time, it will do something else

avatar image jamiecorkhill5 UnityMooCow · Feb 13, 2018 at 02:52 PM 0
Share

Every time the space bar is pressed, I increment a counter variable of type integer. Then, I take that counter variable and check to see if it is even or odd by using the modulo operator. In the event of an even click, the gameobject translates up and to the right. In the event of an odd click, the gameobject translates up and to the left.

What I am trying to implement is that while the space bar is held down (not just tapped) the gameobject move straight up at a 90 degree angle.

Thanks for your 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

495 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 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 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 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 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 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

Play animation once (when down key pressed) in c# 1 Answer

[Help Wanted] How achieve rebinding keys based on New Input System? 0 Answers

Why does this condition keep being true even if its not? 0 Answers

Wrong keyboard-layout in editor 1 Answer

Capturing some key presses from a (TMP) InputField 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