Consignes :

Phase 1 — Organisation du projet (1 point)

  1. Créez un nouveau projet Unity. Nommez le avec le format suivant : TP1_votreNom_votrePrénom;
  2. Créez une nouvelle scène nommée ZoneEssais;
  3. Assurez-vous que la scène est dans le dossier Scenes;
  4. Supprimez la scène par défaut (SampleScene);
  5. Créez un nouveau dossier Scripts dans le dossier Assets.

Phase 2 — Importation de ressources externes (0 point)

Ajoutez le fichier FPSControllerComponent.cs dans le dossier Scripts. Ceci ajoute effectivement une nouvelle composante à votre projet. Faites de même pour les fichiers Q1.cs à Q5.cs.

Phase 4 — Organisation de la scène ZoneEssais (1 point)

  1. Créez un GameObject « vide » nommé GameManager;
  2. Ajoutez une composante FPSControllerComponent sur l’objet. Cette composante s’occupe de modifier les FPS cible du programme.
  3. Assurez-vous que la valeur du paramètre Fps cible est à 60.
  4. Créez un GameObject de cube préfait nommé Cube1;
  5. Placer cet objet à la position \((0,-1,0)\);
  6. Créez un GameObject de cube préfait nommé Cube2;
  7. Placer cet objet à la position \((0,0,0)\);
  8. Créez un GameObject de cube préfait nommé Cube3;
  9. Placer cet objet à la position \((0,1,0)\);
  10. Créez un GameObject de cube préfait nommé Cube4;
  11. Placer cet objet à la position \((-1,0,0)\);
  12. Créez un GameObject de cube préfait nommé Cube5;
  13. Placer cet objet à la position \((1,0,0)\);

Phase 5 — Implémentation de nouvelles composantes

Vous devez implémenter (c.-à-d. écrire le code) de la fonction Update pour chaque fichier Qx.cs. N’oubliez pas que la fonction Update d’une composante est appelée à chaque frame (si la composante est active).

Q1 (1 point)

Le GameObject qui possède une composante Q1 doit faire un déplacement de déplacementXParFrame mètres (unité conventionnel dans Unity) sur \(x\) par frame.

Testez la composante en l’ajoutant sur le GameObject Cube1. Vous pouvez modifier la valeur de déplacementXParFrame avec l’inspecteur. Testez aussi en modifiant la valeur du FPS cible du FPSControllerComponent du GameManager.

Q2 (1 point)

Le GameObject qui possède une composante Q2 doit faire un déplacement de déplacementXParSeconde sur \(x\) par seconde.

Testez la composante en l’ajoutant sur le GameObject Cube2. Vous pouvez modifier la valeur de déplacementXParSeconde avec l’inspecteur. Testez aussi en modifiant la valeur du FPS cible du FPSControllerComponent du GameManager.

Q3 (1 point)

Le GameObject qui possède une composante Q3 doit faire un déplacement selon le vecteur de vitesse/seconde vitesseParSeconde

Testez la composante en l’ajoutant sur le GameObject Cube3. Vous pouvez modifier la valeur de vitesseParSeconde avec l’inspecteur. Testez aussi en modifiant la valeur du FPS cible du FPSControllerComponent du GameManager.

Q4 (2 points)

Le GameObject qui possède une composante Q4 doit subir une rotation de rotationParSecondes par seconde.

Vous pouvez utiliser la fonction transform.Rotate(...) qui prend en paramètre un Vector3 (comme transform.Translate(...))

Testez la composante en l’ajoutant sur le GameObject Cube4. Vous pouvez modifier la valeur de rotationParSecondes avec l’inspecteur. Testez aussi en modifiant la valeur du FPS cible du FPSControllerComponent du GameManager.

Q5 (2 points)

Le GameObject qui possède une composante Q5 doit subir une homothétie d’un facteur de quantitéDéformation. Cette déformation doit n’arriver qu’à chaque tempsEntreDéformation seconde.

Par exemple, si le Scale du GameObject est \((2, 1, 1)\) initialement, et que quantitéDéformation == 1 et tempsEntreDéformation == 1, le Scale sera à \((3, 2, 2)\) après une seconde. Par contre, pendant l’interval de temps \([0, 1[s\), il ne doit pas avoir de déformations.

Pour changer le Scale du GameObject qui possède le script, vous pouvez changer la valeur de la variable transform.localScale. Cette variable est du type Vector3, donc vous pouvez faire transform.localScale = unVecteur3. Les Vector3 d’Unity peuvent être additionner ensemble à l’aide de l’opérateur + pour retourner un nouveau vecteur. Ils peuvent aussi être multiplier par un scalaire avec l’opérateur * pour retourner un nouveau vecteur.

Testez la composante en l’ajoutant sur le GameObject Cube5. Vous pouvez modifier les valeurs de la composante avec l’inspecteur. Testez aussi en modifiant la valeur du FPS cible du FPSControllerComponent du GameManager.

Démo

Soumission

Ce travail doit être soumis par la plateforme turnin avant le 28 septembre 2020 23:59.

Vous devez soumettre votre projet au complet, sans le dossier Library. Compressez le dossier contenant votre projet vers un fichier .zip et assurez-vous que ce fichier .zip ne contient pas le dossien Library.

Pour tester si vous avez créé un .zip adéquat, décompréssez le et ouvrez le nouveau dossier dans Unity Hub pour importer le projet.