Objectif
Permet au personnage d’attaquer via un système de combo à trois coups et une attaque puissante secondaire, avec déclenchement de dégâts lorsqu’une surface est frappée. L’ensemble est piloté par des AnimMontages, et les animations sont blendées dynamiquement entre full-body et upper-body grâce à une courbe.
Fonctionnement général
- Le joueur appuie sur IA_PrimaryAttack → Combo 1-2-3
- Appui sur IA_SecondaryAttack → Power Hit
- Chaque attaque est jouée dans un AnimMontage avec sections nommées (Attack1, Attack2, Attack3, etc.)
- Le passage au coup suivant est conditionné par une fenêtre combo (ComboWindowOpen) et des booléens CanStartCombo
- L’attaque déclenche un événement de contact : si l’arme touche une surface et que le montage est actif → des dégâts sont appliqués.
- Les animations sont blendées entre les slots "UpperBody" et "FullBody" selon une Curve Float (BlendPoseAlpha).Détail du pipeline (étape par étape)
[Étape 1] Déclenchement de la première attaque
- IA_PrimaryAttack déclenche le montage AM_ComboAttack_FullBody, section Attack1.
- Active ComboWindowOpen et CanStartCombo2nd via notify dans l’AnimMontage.
[Étape 2] Transition vers les attaques 2 et 3
- Si l’input est redéclenché dans la fenêtre combo (ComboWindowOpen == true)
- Section suivante est jouée (Attack2 puis Attack3) via Montage Jump To Section.
[Étape 3] Attaque puissante
- IA_SecondaryAttack lance un montage distinct (AM_PowerHit)
- Le mouvement est désactivé pendant l’attaque, puis réactivé à la fin.
[Étape 4] Détection de contact
- L’arme (ou composant de collision) détecte les surfaces via OnComponentBeginOverlap.
- Si l’attaque est en cours (Montage Is Playing) ET si PowerHitIsBeingPressed → déclenche l’événement de dégâts ou destruction.
[Étape 5] Animation blendée via curve
Dans l’AnimGraph :
- Two Way Blend entre le slot DefaultSlot (full body) et le slot UpperBodyPose.
- Contrôlé par une Curve Float (BlendPoseAlpha) présente dans les montages pour adoucir les transitions selon l'action.Problèmes rencontrés
- Risque de spam du combo sans contrôle de la fenêtre (ComboWindowOpen parfois activée trop tôt/tard).
- Difficile de détecter le bon moment d’impact dans le montage.
- Problèmes de blend animation quand plusieurs slots s’enchaînaient trop vite.
Solution implémentée
- Ajout de AnimNotifies précis (CanStartCombo, Go2Attack2, ResetCombo) pour contrôler chaque étape du combo.
- Vérification constante avec Montage Is Playing avant toute nouvelle attaque.
- Animation blend pilotée avec Curve Float intégrée dans les montages → adoucit les transitions Upper/Full Body.Tests et validation
- Test de répétition d’inputs dans différentes cadences pour valider le timing des combos.
- Debug des notifies avec Print String. Visuels
Colle ici des captures d’écran :
Blueprint
- Résultat dans le viewport
- Console debug si pertinent
Notes personnelles ou améliorations futures
- Ajouter un système de "hit pause" sur contact pour augmenter l’impact visuel.
- Synchroniser les dégâts avec des AnimNotifyState pour plus de contrôle sur la durée effective du hit.
- Utiliser une autre stratégie avec différents anim montage pour avoir un meilleur blend entre les animations
- Instaurer un système d'attaques aléatoires