Start implementation of diapason mechanics
This commit is contained in:
@@ -0,0 +1,254 @@
|
||||
# Système d'Écoute Diapason - Checklist d'Implémentation
|
||||
|
||||
## ✅ Scripts Créés (Compilés sans erreur)
|
||||
|
||||
### Core System
|
||||
- [x] **DiapasonListeningHandler.cs** - Gestionnaire principal du mode écoute
|
||||
- [x] **AudioListenable.cs** - Composant pour objets écoutables
|
||||
- [x] **ListeningVignetteEffect.cs** - Effet visuel de vignette
|
||||
- [x] **AudioEmitterData.cs** - ScriptableObject pour configuration
|
||||
|
||||
### Extensions
|
||||
- [x] **AudioListenableEvent.cs** - Événements UnityEvent pour objets écoutables
|
||||
- [x] **ThroughWallListener.cs** - Détection d'objets derrière les murs
|
||||
- [x] **DiapasonDebugger.cs** - Outils de debugging
|
||||
|
||||
### Editor Tools
|
||||
- [x] **AudioListenableEditor.cs** - Custom Inspector avec Quick Setup
|
||||
- [x] **AudioListenableBatchSetup.cs** - Configuration en masse via EditorWindow
|
||||
|
||||
### Data
|
||||
- [x] **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
|
||||
- [x] **README.md** - Architecture et documentation technique
|
||||
- [x] **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!
|
||||
Reference in New Issue
Block a user