Unity 3d 4 jogadores Apenas 4 botões podem ser pressionados por vez

8

Apenas 4 botões podem ser pressionados por vez, para que os jogadores não possam se mover às vezes

Cada jogador tem seus próprios controles

i Alterar, Seta para cima e os outros para cada jogador --- v i Mude a seta para cima e os outros para cada jogador

EntradasV-VV

Entradas

public string UpArrow;
public string DownArrow;
public string LeftArrow;
public string RightArrow;

    if(Input.GetButton(UpArrow))
        transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);

    if(Input.GetButton(DownArrow))
        transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);

    if(Input.GetButton(LeftArrow))
        transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);

    if(Input.GetButton(RightArrow))
        transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
user59720
fonte
Ótima pergunta! Aprendi muito neste exemplo
Evorlor
Os teclados baratos nem reconhecem muitas das três combinações de teclas.
CodesInChaos

Respostas:

19

Os teclados têm limitações de hardware em quantas teclas podem ser pressionadas e reconhecidas ao mesmo tempo.

Seu código não é o problema aqui, é provavelmente o design do teclado.

Almo
fonte
4
É por isso que os jogos FPS para PC utilizam as teclas Shift, CTRL e Alt - elas não contam para esse limite de 4 teclas.
Dustin_00
4
Ps. O truque para permitir uma experiência multiplayer decente em um único computador é oferecer suporte a vários teclados. Eles são baratos o suficiente e, com um simples hub USB ou dois, você pode facilmente conectar dezenas deles ao mesmo tempo. Além disso, libera seus jogadores de se envolverem em um único teclado.
Ilmari Karonen
11
Além disso, qualquer teclado de marca (mesmo o mais barato da Logitech) suporta pressionar pelo menos 4 teclas simultaneamente. Os mecânicos geralmente funcionam como um piano, para que você possa usar todos os dedos. gaming.stackexchange.com/questions/6669/...
Furkan Omay
No entanto, o protocolo USB padrão permite apenas 6 teclas (mais as meta-chaves); portanto, se você deseja um teclado com mais do que isso, ele precisa fornecer seu próprio driver.
ratchet freak
11

Os teclados têm uma matriz de teclas, na qual os botões foram dispostos em algo mais ou menos quadrado, com os interruptores de teclas cada um vinculado a uma linha e uma coluna. O teclado ativa cada linha e depois lê as colunas. Se você esboçar isso, verá que algumas combinações de botões devem ativar as teclas "fantasmas". Você pode corrigir isso com um diodo por botão (que é um custo substancial para um teclado) e ter uma sobreposição total . Para evitar os fantasmas, um teclado sem sobreposição total ignorará combinações de teclas ambíguas.

As teclas modificadoras são sempre projetadas para que possam ser acordadas.

Uma vez que o teclado possui um conjunto de teclas a ser relatado, ele deve ser compilado no relatório USB HID, que possui um byte que é uma máscara de bit de modificadores e 6 bytes para outros scancodes. Portanto, mesmo com o rollover completo, é provável que você não veja mais de 8 modificadores e 6 scancodes simultaneamente.

(o relatório do teclado também possui um byte que é sempre 0, perfazendo um total de 8 bytes)

Ben Jackson
fonte
11
Provavelmente, vale a pena notar que alguns teclados (especialmente os da Razer) usam uma extensão não compatível com HID para permitir a verdadeira sobreposição de teclas completas, mesmo através de USB. Além disso, as portas ps2 também não tinham essa restrição e podiam executar n rollover de chave.
Validade 25/01
2
Tecnicamente, não há nada de incompatível em ter um relatório HID do teclado tão grande quanto você desejar. No entanto, existe um padrão HID de inicialização USB que funciona como eu descrevi. Esse formato limitado foi especificado para que o código simples do BIOS entenda os teclados USB. É apenas mais trabalho projetar um teclado que sai desse modo quando o sistema operacional real é iniciado. É bem provável que os drivers HID genéricos do Windows suportem quantos scancodes você desejar, se o seu dispositivo tiver os descritores corretos.
Ben Jackson
Excelente, obrigado por me informar. Talvez você possa colocar isso na resposta, pois é uma informação valiosa.
Validade 25/01
Outro nome é sobreposição de n-key . Um pouco tangencial: eu tenho um teclado que funciona com drivers do Windows carregados e no firmware UEFI, mas aciona o carregador de inicialização do Windows e algumas mídias inicializáveis ​​- na verdade, os congela. Tradicionalmente, as conexões PS / 2 eram usadas para substituição de n-key com USB limitado a ~ 6, embora isso pareça mais raro recentemente.
Bob