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