keycode introduisant une combinaison de touches

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
Kaloverian
Messages : 341
Inscription : 10 Août 2016 03:03

keycode introduisant une combinaison de touches

Message par Kaloverian » 01 Oct 2020 12:20

bonjour,

Peut=on en C#, après un :

Code : Tout sélectionner

public keycode combinaison_de_touches;
insérer une combinaison de touches?
Si oui,comment?


merci de votre aide
Dernière édition par Kaloverian le 01 Oct 2020 14:09, édité 1 fois.

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: keycode introduisant une combinaison de touches

Message par Max » 01 Oct 2020 13:49

Bonjour,

si tu entends par là détecter l’appui de plusieurs touches en même temps, c'est à toi de le gérer.
Genre:

Code : Tout sélectionner

if(Input.GetKey(KeyCode.A) && Input.GetKey(KeyCode.B))
{
}
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

Re: keycode introduisant une combinaison de touches

Message par jmhoubre » 01 Oct 2020 13:57

Bonjour,

en relisant la documentation de KeyCode, je n'ai pas trouvé de réponse à cette question. Il me semble que ce n'est pas possible directement.

Cette petite fonction pourrait cependant répondre à ton besoin (exemple pour Ctrl + Maj) :

Code : Tout sélectionner

private bool CtrlShift () {
	return (
		(Input.GetKey (KeyCode.LeftShift) || Input.GetKey (KeyCode.RightShift)) &&
		(Input.GetKey (KeyCode.LeftControl) || Input.GetKey (KeyCode.RightControl)));
}
Attention, cette fonction renvoie true tant que les deux touches sont pressées, donc à l'échelle du joueur, plusieurs fois par seconde. GetKeyDown ne donne pas le résultat escompté.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6206
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: keycode introduisant une combinaison de touches

Message par boubouk50 » 01 Oct 2020 15:00

Pour combiner un Shift + C par exemple, tu peux utiliser le GetKey pour le Shift et le GetKeyDown pour le C.

Code : Tout sélectionner

if (Input.GetKey(KeyCode.LeftShift))
{
	if (Input.getKeyDown (KeyCode.C))
	{
		//Action unique lors de l'appui de C PENDANT un shift
	}
}
Il faut prendre en compte que si tu appuies sur C avant Shift, cela ne fonctionnera pas par contre.
Si tu veux le moment pile ou les deux sont appuyés, alors il faut utiliser 2 GetKey et bloquer une seconde entrée avec un booléen.

Code : Tout sélectionner

if (Input.GetKey(KeyCode.LeftShift) && Input.getKey (KeyCode.C))
{
	if (firstEntry)
	{
		firstEntry = false;
		//Action unique lors de l'appui de C PENDANT un shift
	}
}
if (Input.GetKeyUp(KeyCode.LeftShift) || Input.getKeyUp (KeyCode.C))
{
	firstEntry = true;
	//Lorsque une des deux touches est relâchée
}
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « (C#) CSharp »