Groupe : Noémie Pernin, Klara Goucovitch, Paul Siffrin
Le but de ce TP est de réaliser un petit jeu de lancer de légumes. Le joueur doit lancer les légumes dans les tasses pour marquer des points.
Les scripts et les variables sont déjà créés. Utilisez les variables intelligement (normalement toutes sont à utiliser, pas besoin d'en rajouter). Attention les scripts ne sont pas forcément déjà placés dans la scène.
On travaille dans le script VegetableThrower.
- Dans l'éditeur, créer un prefab d'un brocoli et un prefab d'une carotte pour créer des projectiles. On utilisera un ou plusieurs SphereColliders/CapsuleColliders et un Rigidbody (pas besoin d'être très précis). Paramètrer le drag à 1. Ajouter ces prefabs au tableau de légumes du
VegetableThrower. - Créer une fonction
InstantiateRandomVegetablequi instantie et retourne un légume aléatoire du tableauvegetables. - Créer une fonction
ThrowVegetable(Rigidbody vegetable, float throwForce)qui applique la force de lancer au légume en mode Impulse ainsi qu'une force de rotation aléatoire au légume. Le légume doit être lancé vers l'avant duVegetableThrower. Il y a déjà un comportement qui pivote l'avant du vegetal thrower dans la bonne direction. - Faire en sorte que lorsque l'utilisateur maintient le clique gauche, la force de lancer se charge via la variable
throwForce01. Lorsque l'utilisateur relache le bouton du clique gauche, le légume est lancé. Pour calculer la force de lancer, on peut utliser un Lerp entore min, max etthrowForce01
On travaille dans le script GameManager.
- Ajouter une fonction publique pour ajouter des points au score.
- Faire en sorte que les points soient sauvegardés lorsque l'on ferme le jeu et rechargés au lancement du jeu à l'aide de la documentation : https://docs.unity3d.com/ScriptReference/PlayerPrefs.SetInt.html
- Trouver dans la scène l'élément d'UI qui affiche le texte du score et mettre à jour sa valeur en fonction du score actuel.
On travaille dans le script Goal.
-
Dans l'éditeur,
- Ajouter un objet contenant un collider de type Trigger placé à l'entrée d'une tasse.
- Créer en enfant de ce collider un effet de particules représentant une gerbe d'eau qui sort de la tasse. Décocher les notions de looping et play on Awake de ce système de particle.
- Ajouter le script
Goalà l'objet contenant le collider. - Ajouter cet objet pour chaque tasse.
-
Faire en sorte que le Goal joue l'effet de particule et ajoute des points au score lors d'une collision de type trigger (aka un légume rentre dans la tasse).
-
Faire en sorte que les légumes ayant marqué un point soient détruits.
On travaille dans le script BounceVegetable.
- Ajouter un sphere collider au poulet.
- Ajouter une animation sur le poulet qui représente une collision avec un légume en utilisant une Coroutine et des AnimationCurves (normalement l'animator serait probablement plus pertinant).
- Faire en sorte que lors d'une collision, le poulet joue l'animation mais aussi ajoute une force de type Impulse à l'objet qui rentre en collision avec lui.
- Calculer le vecteur partant du centre du poulet vers l'objet qui entre en collision.
- Déterminer une nouvelle direction comme un Lerp entre ce vecteur pouler/objet et le vecteur vers le haut en fonction de
bounceUpward. Le but est de créer un vecteur qui serait un mélange des deux. - Normalizer ce vecteur.
- Utiliser ce vecteur comme direction pour la force à ajouter au légume.
