TP - Ensiie

Transcription

TP - Ensiie
JIN – Human-Systems Interactions
Tutorial – Gamepad Inputs & GUI
Objectifs :
Le but de ce TP est de
- scripter des interactions clavier/manette complexes et temporalisées (héritage, events,
structures…)
- manipuler les réglages Unity des commandes utilisateurs
Input Manager http://docs.unity3d.com/Manual/class-InputManager.html
Time, Input, Debug, List...
Events http://unity3d.com/learn/tutorials/modules/intermediate/scripting/events
1. Mise en place
0. Connecter le gamepad Xbox 360 usb.
1. Input Manager : ajouter 4 nouveaux axes sur le modèle des « Fire » existants pour représenter les
4 boutons A, B, X et Y (cf figure 1), et 1 axe pour les gâchettes.
2. Créer une scène contenant une sphère. Créer un script qui la colore selon le bouton actionné, et
qui la translate selon l’appui sur les gâchettes (s’en servir pour visualiser différents paramètres de
sensibilité).
2. Combo simpliste
Sur le modèle des jeux de combat, écrire un 1er script qui détecte si le joueur a validé une séquence
rapide de 3 boutons donnés (ex. A, B, A) dans une fenêtre de temps limitée
- affichage console ou GUI
3. Combo plus générique basé sur les événements
Principe : ComboManager teste les inputs. A chaque nouveau bouton il envoie un événement aux
différents Combos qui se sont inscrits à cet événement. Ceux-ci gèrent un historique de boutons à
comparer à leur séquence propre. Si la séquence est validée et respecte également les contraintes
de rapidité, ils effectuent une action.
1. ComboManager
- Contient une ou plusieurs structures de données pour représenter les boutons utilisables
- Pour le broadcast, déclare un delegate avec les arguments que vous jugez nécessaires
public delegate void monHandler(<arguments>);
- puis un event associé à ce delegate
public event monHandler monEvent;
- Update() : teste si les différents boutons ont été actionnés et notifie les clients de l’event
1
if(monEvent != null ){
monEvent (<args>);}
2. Classe mère BaseCombo pour représenter les combos
- structures pour stocker l’historique courant des boutons et la séquence à valider
- méthode de comparaison des structures
- méthode maHandlerMethode déclenchée par l’event envoyé par ComboManager : compare et
vérifie les aspects temporels (doit correspondre à l’interface du delegate)
- OnEnable() (resp. OnDisable()): inscription (resp. désinscription) de cette méthode à l’event via
le delegate (rq : il faut avoir accès à l’event…)
monEvent += maHandlerMethode; (resp. monEvent -= maHandlerMethode;)
- méthode d’action à réaliser quand combo valide
3. Classes filles FireBulletCombo et IceBulletCombo
- séquence concrète
- action concrète : texte, particules…
4. Extensions
1. Ajouter un GUI simple pour indiquer les différents combos disponibles et les actions réussies
2. Réglages (cf. cours IHM)
3. Data-driven (cf. TP Shoot’m up)
4. Ajouter la gestion des directions dans les combos
5. Cooldown
1. Ecrire un script qui effectue une action (ici un message console ou GUI) lors de l’appui sur une
touche, en respectant un temps minimum entre chaque action.
2. Associez une visualisation à ce script
- Texture 2D différente selon l’action possible ou non
- Affichage d’un timer qui diminue vers 0 puis disparait
6. Quick Time Event
1. Coder un générateur de QTE de type « bouton rapide » :
- en fonction d’un chronomètre, le système propose régulièrement une touche (aléatoire parmi 4)
- le joueur doit l’appuyer de manière répétée et suffisamment rapidement
- pendant une durée donnée
- cela valide une action (message console ici) en cas de succès
2. Associez une visualisation à ce script
- touche à valider
- barre 2D colorée qui se remplit en fonction du temps tant que la fréquence est valide et diminue
en fonction des appuis trop lents
2
Figure 1 http://wiki.etc.cmu.edu/unity3d/index.php/Joystick/Controller
3