Inputs et Translate
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() |
Ā
OnMouseUp
private void OnMouseUp() |
Ā
OnMouseDrag
private void OnMouseDrag() |
