Scope-04 마지막 캐릭터 상호작용 상세 설명
이 페이지는 의뢰자가 마지막 캐릭터 상호작용 구간을 에디터에서 직접 따라 보면서 이해할 수 있도록, 실제 확인 기준 블루프린트와 함수 흐름을 순서대로 풀어쓴 문서입니다.
핵심은 단순히 공격 애니메이션이 재생되는지 보는 것이 아니라, 공격 가능 거리 진입 -> 공격 상태 전환 -> 무기 충돌 활성화 -> Apply Damage -> HP 감소 -> 사망/후속 UI가 한 사이클로 연결되어 있는지를 이해하는 것입니다.
먼저 보면 좋은 전체 흐름
아래 다이어그램은 마지막 전투의 왕복 구조를 한눈에 보기 위한 요약입니다.
1) 적이 플레이어를 때리는 흐름
Demon_Enemy가PawnSensing -> On See Pawn으로 플레이어를 감지합니다.- 플레이어가
Attack_Range안으로 들어오면On Component Begin Overlap (Attack_Range)에서Cast To CBP_SandboxCharacter_Metahuman_Kellan이 성공하고Troll Attack이true로 바뀝니다. - 적 공격 몽타주가 재생되는 타이밍에
Event WeaponCollisionOnOff가 호출되어SwordCapsule충돌이 잠깐 켜집니다. - 그 짧은 공격 구간 안에서
On Component Begin Overlap (SwordCapsule)이 플레이어와 겹치면Apply Damage가 호출됩니다. - 플레이어 블루프린트
CBP_SandboxCharacter_Metahuman_Kellan의Event AnyDamage가 이를 받아CurrentHealth를 줄이고, 필요하면Death와 HUD 갱신까지 이어집니다.
2) 플레이어가 적을 때리는 흐름
- 플레이어 쪽 공격 입력과 콤보 몽타주 선택은
AC_Combat가 담당합니다. - 플레이어 공격 애니메이션 중
Event WeaponCollisionOnOff가 호출되면 플레이어 무기 충돌이 잠깐 활성화됩니다. - 이 시점에 적과 겹치면 플레이어 쪽
Apply Damage가 실행되어Demon_Enemy로 데미지가 전달됩니다. Demon_Enemy는Assign On Take Any Damage로 연결된OnTakeAnyDamage_Event에서 데미지를 받아CurrentHP를 깎습니다.- HP가 0 이하가 되면
Death이벤트가 실행되고, 최종적으로YouWin_UMG까지 이어집니다.
즉, 마지막 전투는 적과 플레이어가 서로 비슷한 구조를 공유합니다. 둘 다 무기 충돌을 특정 프레임에만 켠 뒤 Apply Damage를 통해 상대의 데미지 이벤트로 넘기고, 그쪽 블루프린트에서 실제 체력 감소와 사망 처리를 담당합니다.
Demon_Enemy에서 봐야 할 핵심 흐름
BeginPlay
CurrentHP를MaxHP와 맞춰 전투 시작 시 체력 기준값을 초기화합니다.- 이어서
Assign On Take Any Damage를 연결해 적이 외부에서 받는 데미지를OnTakeAnyDamage_Event에서 일괄 처리하도록 묶습니다.
이 구간이 필요한 이유는, 플레이어 공격이 들어와도 적이 어디서 HP를 깎아야 하는지 수신 지점이 정리되어 있어야 하기 때문입니다.
OnTakeAnyDamage_Event
- 이 이벤트는 적이 실제로 맞았을 때 실행되는 본체입니다.
- 먼저 생존 가능 여부를 분기로 나눕니다.
- 아직 살아 있으면
CurrentHP - Damage결과를 다시Set CurrentHP로 저장합니다. - 더 버틸 수 없으면
CurrentHP를0으로 맞춘 뒤Death로 넘깁니다.
의뢰자 입장에서는 이 노드를 실제 적 체력 감소가 반영되는 핵심 지점으로 보면 됩니다.
PawnSensing -> On See Pawn
- 적이 플레이어를 발견하고 추적을 시작하는 진입점입니다.
- 일반적으로 이 앞에는
bIsDead같은 생존 상태 체크가 있어서, 이미 죽은 적이 추적이나 공격 로직에 다시 들어가지 않도록 막습니다. - 감지 대상이 유효하면 그 Pawn을 기준으로 움직임과 공격 준비가 이어집니다.
이 노드는 적이 전투 모드에 들어가는 입구라고 이해하면 됩니다.
On Component Begin Overlap (Attack_Range) / On Component End Overlap (Attack_Range)
Attack_Range는 적이 플레이어를 실제로 공격할 거리 안에 있는지 판정하는 범위입니다.- 플레이어가 들어오면
Cast To CBP_SandboxCharacter_Metahuman_Kellan성공 후Set Troll Attack = true가 되어 공격 가능 상태가 켜집니다. - 반대로 플레이어가 빠져나가면
Set Troll Attack = false로 돌아가 공격 루프가 멈춥니다.
PawnSensing이 추적 시작이라면, Attack_Range는 실제 공격 개시 허가에 가깝습니다.
공격 몽타주 선택과 반복 공격 구간
- 스크린샷 기준으로
Is Any Montage Playing분기 뒤에Random Integer in Range,Montages배열,Play Montage가 연결되어 있습니다. - 여기서는
Attack Number를 0~2 범위에서 고르고,Montages배열에서 해당 공격 몽타주를 가져와 재생합니다. - 이후
Delay와Random Float in Range가 이어져 있어, 플레이어가 여전히 공격 가능 범위 안에 있으면 다음 공격을 다시 준비하는 구조입니다.
이 구간은 어떤 공격 모션을 쓸지 고르고, 한 번 끝나면 조건이 유지되는 동안 다시 공격하도록 만든 반복 제어 구간입니다.
Event WeaponCollisionOnOff
- 이 이벤트는 적 공격 애니메이션의 특정 프레임에 맞춰
SwordCapsule충돌을 켜거나 끄는 역할을 합니다. - 공격 애니메이션 전체 시간 동안 충돌을 계속 켜 두지 않고, 칼이 실제로 지나가는 짧은 프레임에만 활성화합니다.
- 이렇게 해야 공격이 빗나갔을 때는 데미지가 안 들어가고, 한 번 맞았을 때도 여러 번 중복으로 들어가는 문제를 줄일 수 있습니다.
즉, 이 이벤트는 공격 모션을 실제 판정으로 바꾸는 연결 장치입니다.
On Component Begin Overlap (SwordCapsule)
- 적 검 충돌이 켜진 상태에서 플레이어와 겹치면 실행됩니다.
Cast To CBP_SandboxCharacter_Metahuman_Kellan이 성공하면Apply Damage를 호출합니다.- 스크린샷 기준
Base Damage는1.0이고,Damage Causer는 적 자신(self)입니다. - 바로 뒤에서
Set Collision Enabled로SwordCapsule을 다시No Collision으로 돌립니다.
이 노드는 실제 타격 확정 지점입니다. 적 공격이 실제 플레이어 HP 감소로 이어지는 마지막 직전 노드가 바로 이 부분입니다.
Death
- 적 체력이 다 떨어졌을 때 호출되는 종착점입니다.
- 먼저
bIsDead를 갱신해 이후 로직이 중복 실행되지 않게 막습니다. - 이후 실행 중인 공격 상태를 정리하고, 사망 연출을 재생하고, 딜레이 뒤
YouWin_UMG를Create Widget -> Add to Viewport로 띄우는 흐름이 이어집니다.
즉, Scope-04는 적을 맞히는 것까지만이 아니라, 마지막 승리 UI까지 도달해야 완성입니다.
CBP_SandboxCharacter_Metahuman_Kellan에서 봐야 할 핵심 흐름
Event AnyDamage
- 적의
Apply Damage가 성공하면 플레이어는 이 이벤트에서 결과를 받습니다. - 따라서 플레이어 피격 처리의 시작점은 적 블루프린트가 아니라 플레이어 자신의
Event AnyDamage입니다.
이 구조를 이해하면, 적이 아무리 공격 애니메이션을 재생해도 플레이어 쪽 Event AnyDamage가 제대로 이어지지 않으면 HP 감소가 안 보이는 이유를 쉽게 이해할 수 있습니다.
DecrescentHealth / Set CurrentHealth
- 플레이어는 받은
Damage를 바탕으로CurrentHealth - Damage를 계산합니다. - 그 값을 다시
Set CurrentHealth로 저장해 실제 플레이어 체력 변수에 반영합니다.
여기는 타격 연출이 아니라 실수치 반영을 담당하는 부분입니다.
생존 분기와 Death
- 체력 감소 후 남은 HP를 기준으로 생존 여부를 나눕니다.
- 0 이하가 되면
Death가 호출되고,Play Anim Montage로 사망 몽타주가 재생됩니다. - 현재 문서 기준으로는
Falling_Back_Death__1__Anim_Montage가 연결된 상태를 확인했습니다.
이 구간 덕분에 플레이어 피격은 단순 수치 감소로 끝나지 않고, 실제 사망 연출까지 이어집니다.
REFRESH HUD / Set Percent
- 체력이 바뀐 뒤에는
WBP_PlayerUI의PlayerHealthBar를 다시 갱신합니다. - 즉, 플레이어 피격은 내부 변수만 줄어드는 것이 아니라 UI 퍼센트까지 함께 바뀌도록 묶여 있습니다.
전투가 정상이라는 것은 캐릭터 변수뿐 아니라 UI 반영까지 한 사이클로 이어진다는 뜻입니다.
플레이어의 공격 판정 구간
- 플레이어도 적과 비슷하게
Event WeaponCollisionOnOff, 무기 충돌,Apply Damage흐름을 사용합니다. - 공격 애니메이션 타이밍에 플레이어 무기 충돌을 잠깐 켜고, 적과 겹치면
Apply Damage로 데미지를 넘깁니다. - 이후 다시
Set Collision Enabled로 충돌을 꺼서 한 번의 공격에서 중복 히트를 막습니다.
따라서 Scope-04를 이해하려면, 플레이어는 적과 대칭 구조로 공격 판정을 쓰고 있다는 점을 같이 보는 것이 좋습니다.
AC_Combat의 역할
AC_Combat는 마지막 전투 전체의 HP 계산 주체는 아닙니다.- 대신
Left Mouse Button입력,ComboCounter,Select,Play Montage,Retriggerable Delay같은 흐름으로 어떤 공격 몽타주를 언제 재생할지 정리합니다.
쉽게 말해 AC_Combat는 공격 입력과 재생 제어를 담당하고, 실제 HP 감소는 그 뒤 무기 충돌과 Apply Damage, 그리고 상대 블루프린트의 데미지 이벤트에서 처리됩니다.
ABP_Demon_Copy의 역할
ABP_Demon_Copy는 현재 구조상 전투 판정의 본체라기보다 표현 레이어에 가깝습니다.- 문서 기준으로 확인한 EventGraph는
Event Blueprint Update Animation -> Try Get Pawn Owner -> Cast To Demon_Enemy수준으로 단순합니다. - AnimGraph도
State Machine -> DefaultSlot -> Output Pose중심 구조입니다.
즉, ABP_Demon_Copy는 실제 전투 허가나 HP 계산이 아니라 애니메이션 표현을 담당합니다. 실제 공격 허가, 무기 충돌, HP 감소, 사망 판정 같은 핵심은 Demon_Enemy 본체에서 보는 것이 맞습니다.
에디터에서 확인할 때 추천 순서
Demon_Enemy에서Attack_Range,SwordCapsule,Apply Damage,OnTakeAnyDamage_Event,Death를 먼저 확인합니다.- 같은 블루프린트에서
Montages배열과Play Montage재생 분기를 봅니다. CBP_SandboxCharacter_Metahuman_Kellan에서Event AnyDamage,DecrescentHealth,REFRESH HUD, 플레이어 무기 충돌 흐름을 확인합니다.AC_Combat에서 공격 입력과 콤보 몽타주 선택 흐름을 확인합니다.- 마지막으로
ABP_Demon_Copy를 열어 표현 레이어가 얇게 유지된 구조를 확인합니다.
이 순서로 보면 마지막 캐릭터 상호작용이 실제로 어떻게 데미지가 오가고 전투가 끝나는지 흐름 단위로 이해하기가 훨씬 쉬워집니다.