UE4 - Creating an ARPG #6,7 - Melee Combo Attacks

노기현·2024년 12월 11일
post-thumbnail

Today's Lesson: Melee Combo Attacks

Summary

  • How to add second and third combo attacks that only activate a short time after the previous attack input.

  • Adding combos for heavy attacks, adjusting delay time ranges and fixing most issues and bugs! this also allows you to mix between attack types during a combo.

AstrumSensei


✅ Animation Import from Mixamo

◼️ Second,Third Light Attack Animation

  • Second Light Attack → Light_Attack_2
    검색어: Sword and Shield Slash

  • Third Light Attack → Light_Attack_3
    검색어: Standing Melee Attack 360

  • Second Heavy Attack → Heavy_Attack_2
    검색어: Great Sword Slash

  • Third Heavy Attack → Heavy_Attack_3
    검색어: Great Sword Kick

  • Create Anim Montage

✅ Anim Notify

◼️ 공격 중 움직임 제어

  • Anim Notify - Disable Movement, Enable Movement
    Skeleton Notify 이용
    - Light_Attack_2_Montage
    - Light_Attack_3_Montage
    - Heavy_Attack_2_Montage
    - Heavy_Attack_3_Montage

✅ Light Attack Logic

◼️ Combat Graph
In Character BP <BP_Base>

  • Input Action Light Attack → Do Once
    노드가 처음 걸릴 때만 출력이 발동하지만, 리셋 가능합니다
    공격 입력 후 특정 시간이 지난 후에 다시 작동하도록 하는 역할
  • New Variable: AttackCount
    (Int, 0)
    현재 몇 번째 LightAttack인지 나타내는 변수
  • Play Montage - Montage to Play → Select Node
    - Option0: Light_Attack_1
    - Option0: Light_Attack_2
    - Option0: Light_Attack_3
    - Index: AttackCount → %(3)
    AttackCount를 3으로 나눈 나머지 값을 Index로 사용
  • Switch On Int
    - Selection: AttackCount → %(3)
    AttackCount를 3으로 나눈 나머지 값을 Selection으로 사용

◼️ Switch Case: 0
첫 번째 Light Attack

  • Increment Int
    - Attack Count
    현재 Attack Count에 +1
  • Delay
    현재 재생 중인 몽타주의 재생 시간에 맞춰서 설정
  • Sequence
    Then 0: Dealy-Duration 이후 DoOnce-Reset 입력에 연결하여 다음 공격 로직 실행 가능하도록 함
    Then 1: Delay 이후 Attack Count를 0으로 초기화시킴
  • Delay
    Duration 이후 Attack Count 초기화 로직
  • Branch - AttackCount <=1 ?
    True → Set AttackCount 0
    현재 AttackCount 값이 1 이하인 경우에만 0으로 초기화
    'AttackCount 값이 1 이하?' 다음 공격이 진행 중이 아니라는 의미

◼️ Switch Case: 1
두 번째 Light Attack

  • Increment Int
    - Attack Count
  • Delay
  • Sequence
    Then 0: DoOnce-Reset에 연결
  • Delay
  • Set AttackCount 0
    다음 공격이 끝이기 때문에 Light Attack 3와 다르게 Branch 로직 없음

◼️ Switch Case: 2
세 번째 Light Attack

  • Set AttackCount 0
  • Delay
    다음 콤보 공격이 존재하지 않기 때문에 AttackCount만 초기화 시킴
    공격할 동안은 입력을 받지 않도록 하고, DoOnce-Reset 입력에 연결

✅ Heavy Attack Logic

◼️ Combat Graph

  • Light Attack과 똑같은 로직으로 구현
  • AttackCount를 공유함으로써, 콤보를 섞어서 사용 가능하게 함

✅ Result

  • Light Attack 1
  • Heavy Attack 2
  • Light Attack 3
profile
RPG 기획자 지망생

0개의 댓글