Inputs et Translate

Tu trouveras sur cette pageĀ :Ā 

EntrƩes de la manette

Un jeu ne serait pas fun sans l’intervention d’un joueur! En tant que dĆ©veloppeur, on aimerait bien pouvoir donner au joueur la possibilitĆ© de contrĆ“ler ce qui se passe Ć  l’écran. Mais comment faire? En lisant ce qu’on appelle les entrĆ©es!

Aussi appelƩes input en anglais, les entrƩes concernent toutes les informations transmises du joueur au jeu.

Astuce:

A l’inverse, les sorties concernent les informations transmises du jeu au joueur! Typiquement le son et l’image peuvent ĆŖtre considĆ©rĆ©es comme des sorties

Comment faire pour dĆ©tecter la pression d’une touche de la manette? Ou bien pour connaĆ®tre la direction du joystick? Tout Ƨa se fait grĆ¢ce au script, et notamment la classe appelĆ©e Input.

DĆ©tecter la pression d’une touche / Input.GetKeyDown()

Pour détecter le moment même où une touche a été pressée, nous utilisons

Input.GetKeyDown()

Mais où placer le code ? Si tu as lu et assimilĆ© Dans l’Update ! Car le jeu va vĆ©rifier en permanence si oui ou non on a cliquĆ© sur la fameuse pression de touche. Donc comme on vient de le voir, il s’agit d’une condition.

Update (){   if (Input.GetKeyDown(« Space »)) {     // mettre ici le code à exécuter quand la touche espace est pressée   }

Ā 

if (Input.GetKeyDown(« 0 »)) {     // mettre ici le code à exécuter quand clic gauche de la souris est pressée   } }

Lire les joysticks avec Input.GetAxis()

Ā 

Pour savoir dans quelle direction le joueur pousse le joystick ou les flĆØches du clavier, on utilise la mĆ©thode Input.GetAxis(). C’est une mĆ©thode simple qui permet de mesurer Ć  quel point le joueur pousse vers une direction ou une autre:

  • Input.GetAxis(ā€œHorizontalā€) renvoie un nombre entre -1 et 1:

    • -1 quand on appuie sur la flĆØche de gauche

    • +1 quand on appuie sur le flĆØche de droite

    • 0 quand on appuie sur ni l’un ni l’autre

  • Input.GetAxis(ā€œVerticalā€) suit la mĆŖme logique:

    • -1 quand on appuie sur la flĆØche du bas

    • +1 quand on appuie sur la flĆØche du haut

    • 0 quand on appuie sur ni l’un ni l’autre

Teste donc en affichant sur la console la valeur que renvoie la variable horizontal Ć  l’aide du Debug.Log! (Fiche ressources sur le Debug)

horizontal = Input.GetAxis(« Horizontal »); Debug.Log(horizontal);

Lance le jeu et clique sur les touches droite et gauche pour voir ce que la console affiche. La console affiche 0 par dĆ©faut, -1 quand on essaie d’aller Ć  gauche et +1 quand on essaie d’aller Ć  droite!

Tu peux aussi essayer avec Input.GetAxis(ā€œVerticalā€)!

Les vecteurs

Ā 

Les vecteurs sont comme des directions qu’on va pouvoir combiner, ajouter, multiplier…etc.Ā 

Le vecteur rouge pointe vers un point qui se trouve -1 Ć  gauche et 3 en haut

Le vecteur vert pointe vers un point qui se trouve 7 Ć  droite et 3 en haut

En utilisant ce systĆØme, on peut dĆ©crire n’importe quelle direction! TrĆØs pratique pour faire du jeu vidĆ©o!Ā 

On peut mĆŖme additionner et multiplier des vecteurs: Par exemple, si on multiplie le vecteur transform.right (qui pointe vers la droite de l’objet):

  • par 1, il n’est pas affectĆ©

  • par 0, il devient nul.Ā 

  • par -1, il se retourne et pointe dans la direction opposĆ©e.Ā 

Sur Unity, tu croiseras surtout des Vector2 (Ơ deux dimensions) et des Vector3 (Ơ trois dimensions). En vƩritƩ, un vecteur est juste un ensemble de nombres attachƩs ensemble

Vector2 est une combinaison de deux nombres x et y

Vector3 est une combinaison de trois nombres x, y et z.Ā 

Voici quelques vecteurs communs que tu risques de croiser:

  • Vector2.right:Ā  Ā  pointe vers la droite – raccourci pour Vector2(1, 0)

  • Vector2.up:Ā  Ā  Ā  Ā  pointe vers le haut – raccourci pourĀ  Vector2(0, 1)

  • Vector2.left: Ā  Ā  Ā  pointe vers la gauche – raccourci pourĀ  Vector2(-1, 0)

  • Vector2.down: Ā  pointe vers le bas – raccourci pourĀ  Vector2(0, -1)

DĆ©placer l’objet avec Translate

Pour dƩplacer un objet, on peut utiliser la fonction transform.translate().

Translate dĆ©place l’objet dans la direction du Vecteur qu’on lui met en argument (c’est Ć  -dire entre parenthĆØses). Tu ne te souviens plus des Vecteurs? Tu peux en lire davantage dans la page dĆ©diĆ©e aux Vecteurs!

Vector2 direction = new Vector2(1, 0.5f); transform.Translate(direction)

Ce code dĆ©place par exemple l’objet de 1 unitĆ© vers la droite et 0.5 unitĆ© vers le haut

Faire tourner l’objet avec Rotate

Pour faire tourner l’objet on peut utiliser la fonction transform.Rotate().

Rotate fait tourner l’objet selon les axes du Vecteur qu’on lui met en argument (c’est Ć  -dire entre parenthĆØses).

Vector3 rotation = new Vector3(0, 1, 0); transform.Rotate(rotation)

Ce code fait tournerĀ  l’objet de 1 unitĆ© autour de l’axe y (l’axe vertical en 3D)

Inputs sur mobile

Detecter le toucher Ć  l’Ć©cran

Unity utilise quelques fonctions prĆ©dĆ©finies (similaires aux fonctions Start ou Update) pour dĆ©tecter le clic de souris et le tapotement du doigt. Ces fonctions s’appellent OnMouseDown, OnMouseUp et OnMouseDrag.Ā 

OnMouseDown

private void OnMouseDown()
{
Ā  /* le code ici sera exĆ©cutĆ© dĆØs que le doigt touche l’Ć©cran */
}

Ā 

OnMouseUp

private void OnMouseUp()
{
Ā  /* le code ici sera exĆ©cutĆ© dĆØs que le doigt relĆ¢che l’Ć©cran */
}

Ā 

OnMouseDrag

private void OnMouseDrag()
{
Ā  /* le code ici sera exĆ©cutĆ© tant que le doigt reste sur l’Ć©cran */
}

Retour en haut