8.2 KiB
Système d'Écoute Diapason - Checklist d'Implémentation
✅ Scripts Créés (Compilés sans erreur)
Core System
- DiapasonListeningHandler.cs - Gestionnaire principal du mode écoute
- AudioListenable.cs - Composant pour objets écoutables
- ListeningVignetteEffect.cs - Effet visuel de vignette
- AudioEmitterData.cs - ScriptableObject pour configuration
Extensions
- AudioListenableEvent.cs - Événements UnityEvent pour objets écoutables
- ThroughWallListener.cs - Détection d'objets derrière les murs
- DiapasonDebugger.cs - Outils de debugging
Editor Tools
- AudioListenableEditor.cs - Custom Inspector avec Quick Setup
- AudioListenableBatchSetup.cs - Configuration en masse via EditorWindow
Data
- 9 Présets AudioEmitterData créés dans
/Assets/Unheimlich_POC/Datas/AudioEmitters/:- WallEmitter.asset
- MetalEmitter.asset
- WoodEmitter.asset
- GlassEmitter.asset
- StoneEmitter.asset
- MechanicalEmitter.asset
- ElectricalEmitter.asset
- WaterEmitter.asset
- OrganicEmitter.asset
Documentation
- README.md - Architecture et documentation technique
- Page Système d'Écoute - Diapason - Guide complet utilisateur
⚠️ Configuration Manuelle Requise
1. Input System Setup
Fichier: /Assets/Unheimlich_POC/Inputs/PlayerController.inputactions
Actions à faire:
-
Ouvrir le fichier dans l'Input System window
-
Dans l'Action Map "Player", ajouter une nouvelle action:
- Nom:
Diapason - Action Type:
Button - Control Type:
Button
- Nom:
-
Ajouter les bindings:
PS5 Controller: Triangle (Button South) Xbox Controller: Y (Button North) Keyboard: T (ou touche de votre choix) -
Sauvegarder et générer la classe C#
2. PlayerInputManager Configuration
GameObject: /GAMEPLAY/Player
Dans l'Inspector du PlayerInputManager:
- Trouver le champ
Diapason Action - Assigner l'action "Diapason" depuis le PlayerController.inputactions
- Vérifier que la callback
OnDiapasonest bien configurée
3. DiapasonListeningHandler Setup
GameObject: /GAMEPLAY/Player
Actions:
-
Ajouter le composant
DiapasonListeningHandler -
Assigner les références:
- Diapason Object: Glisser
/GAMEPLAY/Player/Diapason - Diapason Animator: Glisser l'Animator du Diapason
- Player Camera: Glisser
/GAMEPLAY/Player/CameraPivot/Main Camera - Diapason Action: Assigner l'InputActionReference vers l'action Diapason
- Diapason Object: Glisser
-
Configurer les paramètres:
Listening Range: 5.0 Listenable Layers: Interactable (ou créer un layer "Listenable") Concentration Duration: 1.0 Breath In Duration: 0.5 Camera Pan Speed: 2.0 Camera Pan Border Size: 0.1 Max Camera Pan Angle: 15.0 Vignette Intensity: 0.5 Ambient Attenuation Amount: 0.3
4. Animator du Diapason
GameObject: /GAMEPLAY/Player/Diapason
Parameters requis:
-
Ouvrir l'Animator Controller
-
Ajouter les parameters:
IsEquipped(Bool)Tap(Trigger)
-
Créer les animations:
- Idle: Animation de repos (peut être vide)
- Tap: Animation de frappe du diapason
-
Setup des transitions:
- Any State → Tap (Condition: Trigger Tap)
- Tap → Idle (Exit Time)
5. Audio Clips
À créer ou importer:
-
Breath In Sound (_breathInClip):
- Son d'inspiration profonde
- Durée: ~0.5-1 seconde
- Format: WAV ou MP3
-
Diapason Tap Sound (_diapasonTapClip):
- Son métallique de diapason
- Durée: ~0.3-0.5 seconde
- Légère résonance
Où les assigner:
- Dans le composant
DiapasonListeningHandlersur le Player
6. Layer Configuration (Optionnel mais Recommandé)
Project Settings → Tags and Layers
- Créer un nouveau layer:
Listenable - Dans
DiapasonListeningHandler, assigner ce layer - Tous les objets avec
AudioListenabledevraient utiliser ce layer
Ou réutiliser le layer existant Interactable.
7. Vignette Effect (Optionnel)
GameObject: /ENVIRONMENT/Global Volume (ou créer)
Si vous voulez l'effet de vignette:
- S'assurer qu'un Global Volume existe avec URP
- Ajouter le composant
ListeningVignetteEffectau Player - Assigner le Global Volume
- Dans le DiapasonListeningHandler, assigner la référence
Vignette Effect
🎯 Test Initial
Test Rapide du Système
- Enter Play Mode
- Appuyer sur T (ou Triangle/Y sur manette)
- Observer:
- Phase de concentration (~1 seconde)
- Curseur apparaît
- Le diapason devient visible
- Pointer vers un objet avec AudioListenable
- Clic gauche pour taper
- Écouter le son généré
- Appuyer à nouveau sur T pour sortir
Ajout d'Objets Écoutables pour Test
Méthode Rapide:
- Sélectionner des GameObjects dans la scène (murs, portes, etc.)
- Menu:
Tools → Unheimlich → Audio Listenable Batch Setup - Choisir le type (ex: Wall)
- Cliquer "Add to Selected Objects"
- S'assurer que les objets ont un Collider
- Assigner le layer "Listenable" ou "Interactable"
Ou utiliser les presets:
- "Setup All Walls in Scene" - Configure tous les objets contenant "wall"
- "Setup All Doors in Scene" - Configure tous les objets contenant "door"
📋 Vérification Post-Setup
Checklist Finale
- L'action "Diapason" existe dans PlayerController.inputactions
- DiapasonAction est assigné dans PlayerInputManager
- DiapasonListeningHandler est sur le Player avec toutes les références
- L'Animator du diapason a les parameters IsEquipped et Tap
- Au moins un objet dans la scène a AudioListenable
- Les objets écoutables ont un Collider
- Les objets écoutables sont sur le bon layer
- Les AudioClips sont assignés (ou commentés pour test)
- Aucune erreur de compilation
Test Avancé
- Test Audio Procédural: Vérifier différents types de matériaux
- Test Vibrations: Tester avec une manette connectée
- Test Distance: S'éloigner pour vérifier l'atténuation
- Test Camera Pan: Bouger le curseur sur les bords
- Test Through Wall: Si implémenté, tester ThroughWallListener
🛠️ Outils Disponibles
Menu Tools
Tools → Unheimlich → Audio Listenable Batch Setup
- Configuration en masse d'objets écoutables
- Presets automatiques par nom
Custom Inspector
Sur un GameObject avec AudioListenable:
- Boutons Quick Setup par type de matériau
- Test en Play Mode
Debug
Ajouter DiapasonDebugger au Player ou un GameObject de scene:
- Affichage info système en temps réel
- Liste des objets écoutables
- Gizmos visuels
- Context menu pour enable/disable all
📖 Documentation
Guides Disponibles
- Système d'Écoute - Diapason (Page): Guide complet utilisateur
- README.md (Scripts/Audio): Architecture technique
- IMPLEMENTATION_CHECKLIST.md (ce fichier): Checklist de setup
Exemples de Code
Voir les scripts d'exemple:
AudioListenableEvent.cs- Pour ajouter des événementsThroughWallListener.cs- Pour écouter à travers les murs
⚡ Quick Start (Minimum Viable)
Pour tester rapidement sans tout configurer:
- Ajouter
DiapasonListeningHandlerau Player - Créer une action Input "Diapason" binding sur T
- Assigner les 3 références principales (Diapason, Animator, Camera)
- Ajouter
AudioListenablesur quelques objets - Play et appuyer sur T
Note: Sans les AudioClips, le système fonctionne mais sans les sons de respiration et de tap.
🐛 Troubleshooting
Rien ne se passe quand j'appuie sur T:
- Vérifier l'action Input existe et est assignée
- Vérifier que le Player n'est pas dans un autre état qui bloque les inputs
- Regarder la Console pour des erreurs
Pas de son lors du tap:
- Vérifier que l'objet ciblé a AudioListenable
- Vérifier le layer de l'objet
- Vérifier la distance (max 5m par défaut)
- Vérifier que l'objet a un Collider
La caméra ne bouge pas:
- Vérifier Camera Pan Border Size > 0
- Vérifier que Player Camera est assigné
- Bouger le curseur tout au bord de l'écran
✨ C'est Prêt!
Le système est entièrement implémenté et prêt à l'emploi. Il suffit de suivre les étapes de configuration manuelle ci-dessus et vous pourrez commencer à tester immédiatement!