Unity 3d 4 joueurs Seuls 4 boutons peuvent être enfoncés à la fois

8

Seuls 4 boutons peuvent être enfoncés à la fois, donc les joueurs ne peuvent pas bouger parfois

Chaque joueur a ses propres contrôles

i Change, Flèche vers le haut et les autres pour chaque joueur --- v i Changer la flèche vers le haut et les autres pour chaque joueur

Entrées V-VV

Contributions

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
la source
Grande question! Beaucoup appris sur celui-ci
Evorlor
Les claviers bon marché ne reconnaîtront même pas plusieurs combinaisons de 3 touches.
CodesInChaos

Réponses:

19

Les claviers ont des limitations matérielles sur le nombre de touches pouvant être enfoncées et reconnues en même temps.

Votre code n'est pas le problème ici, c'est probablement la conception du clavier.

Almo
la source
4
C'est pourquoi les jeux PC FPS utilisent les touches Maj, CTRL et Alt - ils ne comptent pas dans cette limite de 4 touches.
Dustin_00
4
Ps. L'astuce pour permettre une expérience multijoueur décente sur un seul ordinateur est de prendre en charge plusieurs claviers. Ils sont assez bon marché et avec un simple concentrateur USB ou deux, vous pouvez facilement en connecter des dizaines en même temps. De plus, cela libère vos joueurs d'avoir à se blottir autour d'un seul clavier.
Ilmari Karonen du
1
De plus, n'importe quel clavier de marque (même le moins cher de Logitech) prend en charge la pression simultanée d'au moins 4 touches. Les mécaniques fonctionnent généralement comme un piano, vous pouvez donc utiliser tous vos doigts. gaming.stackexchange.com/questions/6669/…
Furkan Omay
Cependant, le protocole USB par défaut ne permet que 6 touches (plus les méta-clés), donc si vous voulez un clavier avec plus que cela, il doit fournir son propre pilote.
ratchet freak
11

Les claviers ont une matrice de touches, où les boutons ont été disposés en quelque chose de plus ou moins carré, les interrupteurs à clé étant chacun liés à une ligne et une colonne. Le clavier active chaque ligne puis lit les colonnes. Si vous esquissez ceci, vous verrez que certaines combinaisons de boutons doivent activer les touches "fantômes". Vous pouvez résoudre ce problème avec une diode par bouton (ce qui représente un coût substantiel pour un clavier) et avoir un survol complet . Pour éviter les fantômes, un clavier sans survol complet ignorera les combinaisons de touches ambiguës.

Les touches de modification sont toujours conçues pour pouvoir être accordées.

Une fois que le clavier a un ensemble de touches à signaler, il doit l'intégrer dans le rapport USB HID, qui a un octet qui est un masque de bits de modificateurs et 6 octets pour les autres scancodes. Ainsi, même avec un survol complet, vous ne verrez probablement pas plus de 8 modificateurs et 6 scancodes simultanément.

(le rapport du clavier a également un octet qui est toujours 0, ce qui fait 8 octets au total)

Ben Jackson
la source
1
Il est probablement intéressant de noter que certains claviers (en particulier ceux Razer) utilisent une extension non compatible HID afin de permettre un véritable roulement complet des touches même sur USB. De plus, les ports ps2 n'avaient pas non plus cette restriction et pouvaient effectuer un roulement de clé n.
Vality
2
Techniquement, il n'y a rien de non conforme à avoir un rapport HID de clavier aussi volumineux que vous le souhaitez. Cependant, il existe une norme HID de démarrage USB qui fonctionne comme je l'ai décrit. Ce format limité a été spécifié pour que le code simple du BIOS puisse comprendre les claviers USB. C'est juste plus de travail de concevoir un clavier qui passe de ce mode au lancement du vrai système d'exploitation. Il est fort probable que les pilotes HID génériques de Windows prennent en charge autant de scancodes que vous le souhaitez si votre appareil possède les bons descripteurs.
Ben Jackson
Excellent, merci de me le faire savoir. Vous pourriez peut-être mettre cela dans la réponse car il s'agit d'informations précieuses.
Vality
Un autre nom est le roulement à n touches . Un peu tangentiel: j'ai un tel clavier qui fonctionne avec les pilotes Windows chargés et dans le firmware UEFI, mais déclenche le chargeur de démarrage Windows et certains supports de démarrage - il les gèle en fait. Traditionnellement, les connexions PS / 2 étaient utilisées pour le roulement à n touches avec USB limité à ~ 6, bien que cela semble plus rare récemment.
Bob