Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

539
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda