Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

535
Views
Detecta el número de teclas que se presionan Unity C#

Estoy tratando de crear un sistema de movimiento basado en cuadrículas y tengo un error en el que el jugador se mueve una cantidad extraña cuando ingresan varias entradas. ¿Hay alguna forma de detectar cuántas teclas del teclado se presionan?

Por ejemplo, algo como:

 If(numberOfKeysDown > 1)

¿o algo?

Sé que puedes hacer conteos táctiles si trabajas con un dispositivo móvil, pero no estoy seguro acerca de las teclas. ¡Gracias por tu tiempo!

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Si solo desea probar lo que dijo, debería ser suficiente para verificar Input.anyKey

¿Hay alguna tecla o botón del mouse presionado actualmente?

 if(Input.anyKey)

Si desea verificar claves específicas, puede usar Input.GetKey y Linq Count como, por ejemplo

 // Fancy queries ;) using System.Linq; ... // The keycodes you wan to check private HashSet<KeyCode> keysToCheck = { KeyCode.W, KeyCode.A, KeyCode.S, KeyCode.D }; int numberOfKeysPressed; private void Update () { numberOfKeysPressed = keysToCheck.Count(key => Input.GetKey(key)); // This basically equals doing // var numberOfKeysPressed = 0; // foreach(var key in KeyToCheck) //{ // if(Input.GetKey(key)) numberOfKeysPressed++; //} }

O podría usar Input.GetKeyDown y Input.GetKeyUp y hacer algo como

 private HashSet<KeyCode> keysToCheck = { KeyCode.W, KeyCode.A, KeyCode.S, KeyCode.D }; int numberOfKeysPressed; private void Update () { foreach (var key in KeyToCheck) { if(Input.GetKeyDown(key)) numberOfKeysPressed++; if(Input.GetKeyUp(key)) numberOfKeysPressed--; } }

Si desea todos los valores KeyCode , puede usar

 private void Awake () { keysToCheck = new HashSet<KeyCode>((KeyCode[])Enum.GetValues(typeof(KeyCode))); }

Si realmente desea obtener la cantidad de pulsaciones de teclas en el teclado, probablemente sería más eficiente usar directamente Event.current y hacer algo como

 HashSet<string> currentlyPressedKeys = new HashSet<string>(); void OnGUI () { Event e = Event.current; switch(e.type) { case EventType.KeyDown: var key = e.keyCode.ToString(); if(!currentlyPressedKeys.Contains(key)) currentlypressedKeys.Add(key); break; case EventType.KeyUp: var key = e.keyCode.ToString(); if(currentlyPressedKeys.Contains(key)) currentlypressedKeys.Remove(key); break; } }

Ahora, donde sea que necesite saber, puede hacerlo, por ejemplo.

 if(currentlyPressedKeys.Count > XY)
over 4 years ago · Santiago Trujillo Report

0

No creo que haya un método específico para esto.

Sin embargo, podría escribir su propio método de contador usando Input.GetKeyDown .

Al igual que

 int GetKeysDownCount() { var keysDown = 0; if(Input.GetKeyDown(KeyCode.W) keysDown++; if(Input.GetKeyDown(KeyCode.A) keysDown++; if(Input.GetKeyDown(KeyCode.S) keysDown++; if(Input.GetKeyDown(KeyCode.D) keysDown++; return keysDown; }

https://docs.unity3d.com/ScriptReference/Input.GetKeyDown.html

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!