Files
Ipseity-Demo/Assets/Unheimlich_POC/Scripts/Audio/IMPLEMENTATION_CHECKLIST.md
T

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:

  1. Ouvrir le fichier dans l'Input System window

  2. Dans l'Action Map "Player", ajouter une nouvelle action:

    • Nom: Diapason
    • Action Type: Button
    • Control Type: Button
  3. Ajouter les bindings:

    PS5 Controller: Triangle (Button South)
    Xbox Controller: Y (Button North) 
    Keyboard: T (ou touche de votre choix)
    
  4. Sauvegarder et générer la classe C#

2. PlayerInputManager Configuration

GameObject: /GAMEPLAY/Player

Dans l'Inspector du PlayerInputManager:

  1. Trouver le champ Diapason Action
  2. Assigner l'action "Diapason" depuis le PlayerController.inputactions
  3. Vérifier que la callback OnDiapason est bien configurée

3. DiapasonListeningHandler Setup

GameObject: /GAMEPLAY/Player

Actions:

  1. Ajouter le composant DiapasonListeningHandler

  2. 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
  3. 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:

  1. Ouvrir l'Animator Controller

  2. Ajouter les parameters:

    • IsEquipped (Bool)
    • Tap (Trigger)
  3. Créer les animations:

    • Idle: Animation de repos (peut être vide)
    • Tap: Animation de frappe du diapason
  4. Setup des transitions:

    • Any State → Tap (Condition: Trigger Tap)
    • Tap → Idle (Exit Time)

5. Audio Clips

À créer ou importer:

  1. Breath In Sound (_breathInClip):

    • Son d'inspiration profonde
    • Durée: ~0.5-1 seconde
    • Format: WAV ou MP3
  2. 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 DiapasonListeningHandler sur le Player

6. Layer Configuration (Optionnel mais Recommandé)

Project Settings → Tags and Layers

  1. Créer un nouveau layer: Listenable
  2. Dans DiapasonListeningHandler, assigner ce layer
  3. Tous les objets avec AudioListenable devraient 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:

  1. S'assurer qu'un Global Volume existe avec URP
  2. Ajouter le composant ListeningVignetteEffect au Player
  3. Assigner le Global Volume
  4. Dans le DiapasonListeningHandler, assigner la référence Vignette Effect

🎯 Test Initial

Test Rapide du Système

  1. Enter Play Mode
  2. Appuyer sur T (ou Triangle/Y sur manette)
  3. Observer:
    • Phase de concentration (~1 seconde)
    • Curseur apparaît
    • Le diapason devient visible
  4. Pointer vers un objet avec AudioListenable
  5. Clic gauche pour taper
  6. Écouter le son généré
  7. Appuyer à nouveau sur T pour sortir

Ajout d'Objets Écoutables pour Test

Méthode Rapide:

  1. Sélectionner des GameObjects dans la scène (murs, portes, etc.)
  2. Menu: Tools → Unheimlich → Audio Listenable Batch Setup
  3. Choisir le type (ex: Wall)
  4. Cliquer "Add to Selected Objects"
  5. S'assurer que les objets ont un Collider
  6. 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é

  1. Test Audio Procédural: Vérifier différents types de matériaux
  2. Test Vibrations: Tester avec une manette connectée
  3. Test Distance: S'éloigner pour vérifier l'atténuation
  4. Test Camera Pan: Bouger le curseur sur les bords
  5. 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énements
  • ThroughWallListener.cs - Pour écouter à travers les murs

⚡ Quick Start (Minimum Viable)

Pour tester rapidement sans tout configurer:

  1. Ajouter DiapasonListeningHandler au Player
  2. Créer une action Input "Diapason" binding sur T
  3. Assigner les 3 références principales (Diapason, Animator, Camera)
  4. Ajouter AudioListenable sur quelques objets
  5. 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!