Page 1 sur 1

keycode introduisant une combinaison de touches

Publié : 01 Oct 2020 12:20
par Kaloverian
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

Re: keycode introduisant une combinaison de touches

Publié : 01 Oct 2020 13:49
par Max
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))
{
}

Re: keycode introduisant une combinaison de touches

Publié : 01 Oct 2020 13:57
par jmhoubre
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é.

Re: keycode introduisant une combinaison de touches

Publié : 01 Oct 2020 15:00
par boubouk50
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
}