Logo Makeyourgame
Accueil Les formations Créer un jeu Les ateliers Les tutoriels Blog Loterie
Logo Makeyourgame
Les formations Les financements Les exercices La certification Unity
Logo Makeyourgame
Mes objectifs Les jeux Les ressources Le glossaire
Logo Makeyourgame
Les tutos Youtube Les tutos Accompagnement Audio Documentation Godot Engine Graphisme 2D Graphisme 3D Langage C# Mini-Exercices Unity Web Phaser NoCode

Transform.Rotate

Unity:Rotation et scale d’un objet sur mobile


Transform.Rotate

Manipuler la rotation d’un objet sur Unity peut être très complexe. Unity utilise des quaternions mais cette leçon va au delà de cet atelier alors si vous êtes intéressés, je vous invite à faire des recherches personnelles

Heureusement pour nous, Unity nous facilite la tâche grâce à la méthode Rotate.

Cette méthode prend 4 paramètres:

  • Angle X
  • Angle Y
  • Angle Z
  • Point de repère de rotation
public GameObject cube;

public float xAngle;
public float yAngle;
public float zAngle;

void Update()
{
    cube.transform.Rotate(xAngle, yAngle, zAngle, Space.Self)
}

Cette méthode nous permet d'appliquer une rotation individuelle sur chaque angle qu’on veut viser mais aussi nous permet de lui donner son repère de rotation. C'est-à- dire qu’on peut faire tourner l’objet par rapport aux axes du référentiel local XYZ ou les axes XYZ du référentiel global (de la scène).

Cette méthode hérite de la classe Transform et dans cet exemple, le cube va tourner “xAngles” degrés sur l’axe X à chaque update, “yAngles” degrés sur l’axe Y à chaque update et “zAngles” degrés sur l’axe Z à chaque update, sur ses propres axes.

Si on voudrait que cet objet tourne par rapport aux axes globaux, on utilisera “Space.World”.

Comme on a pu le voir avant, on peut récupérer la position du doigt sur l’écran grâce à la structure Touch. Sachant que cette valeur est un Vector2, on pourra utiliser cette variable pour affecter la rotation d’un objet sur un écran tactile. 

Je vous propose maintenant de coder un comportement pour faire la rotation d’un objet grâce à la comparaison d’un doigt quand il touche l’écran et quand le même doigt bouge sur l’écran. Pour cela vous aurez besoin donc de:

  • Déclarer une vitesse de rotation publique
  • La condition “(Input.touchCount == 1)” pour s’assurer que le comportement va s'exécuter que quand il y a 1 doigt.
  • Déclarer une variable Touch qu’on va assigner le premier doigt avec “Input.GetTouch(0)”
  • Déclarer 2 variables pour la position de début, du doigt (variable X et variable Y)
  • Assigner la position a ces 2 variables au moment ou le doigt touche l’écran
  • Appliquer une rotation à l'objet grâce a la différence entre la position du doigt du début et la position actuelle (il faudra multiplier le résultat par la vitesse de rotation pour avoir plus de contrôle sur notre comportement)
  • A la fin de ce comportement, il faudra assigner la valeur du début du toucher a la position actuelle. Dans le cas contraire, plus on s’éloigne de la position de début, plus la rotation va être prononcée et pour cela, on cherche une rotation constante.




Validation de la session

Veuillez vous connecter ou créer un compte pour pouvoir valider cette session et ainsi gagner encore plus d'XP !


Retour à l'atelier


Continuer sur: Rotation sur une application mobile ?

Session précédente / suivante

Utilisation d'un doigt

Pour commencer, on va s’assurer que tout marche correctement dès le début avec la reconnaissance du positionnement d’un seul doigt.