- 스킬이펙트 추가 나이아가라, SkillPoseBoneName 각각 foot_l, foot_r 발로 밟는 스킬이니까 발에서 터지게
- enum SkillFxAttachType 추가 스킬 fx가 본 어디에서 터질지(본,본중간,본에 바닥..), 스킬 고도화및 다양화로 인해 데이터로 써줄수있게 하려고, 한가지더 핑이튀거나 시간차로 이펙트 위치가 공중에 ,이상한곳이 생길수있다. 그것보다는 아예 바닥으로 나오게 하는 보정 처리도 있음
소울류 게임에서 자주 보이는 암살 기능은 상대 뒤에서 강한 데미지를 가하는 것이다. 이 기능이 필요한 이유는 단순히 앞에서 맞붙는 평면적인 전투에 변화를 주고, “뒤를 잡아 한 방에 끝낸다”는 재미 요소를 추가하기 위함이다.
설계 고민
암살 가능 여부를 누가 판단할지 두 가지 접근을 생각했다.
몹 주도 체크
몬스터가 스스로 상태, 시야, 청각, 플레이어와의 거리를 계산해 암살 가능 여부를 판단.
플레이어 주도 체크
플레이어가 일정 주기로 주변 몹들을 스캔하고, 몹의 상태를 확인해 암살 가능한 대상을 선택.
처음에는 1번 방식을 고민했지만, 결국 암살 기능의 주체는 플레이어다. 따라서 플레이어가 주도적으로 체크하고, 몹은 자기 상태(전투 중, 패트롤 중, 추적 중 등)만 제공하도록 구조를 바꿨다.
동작 방식
플레이어가 몬스터 뒤에서 일정 거리 이내에 접근하고, 몬스터가 플레이어를 인식하지 못했을 때 암살 아이콘을 노출한다.
아이콘 위치는 목 위치로 (BoneName : "neck_01")
이때 특정 키를 입력하면 암살 애니메이션이 발동
몬스터 방향을 플레이어에게 등을 지도록 회전
if (ACharacter* Victim = Cast<ACharacter>(BackstabTarget))
{
// 몬스터 → 플레이어 방향 벡터
FVector ToAttacker = (OwnerCharacter->GetActorLocation() - Victim->GetActorLocation()).GetSafeNormal2D();
// 그 방향을 바라보는 회전
FRotator VictimRot = ToAttacker.Rotation();
// Yaw에 180도 추가해서 등을 내주게 함
VictimRot.Yaw += 180.f;
Victim->SetActorRotation(VictimRot);
}
몬스터 체력만큼의 데미지를 입힌다.
단, 엘리트 몬스터나 보스는 암살이 불가능하거나, 한 번에 죽지 않는 예외 케이스를 고려한다.
구현 이슈
현재 몹은 상태에 따라 ABP(애님 블루프린트)에서 Dead 시퀀스를 재생한다. 문제는 암살로 적을 처치해도 일반 Dead 애니메이션이 실행된다는 점이었다.
오늘은 몹 AI와 플레이어 간 전투가 조금 더 박진감 있게 느껴지도록 거리 좁히기 스킬을 추가했다.
왜 이기능이 필요한가?
전투를 하다면 몹과 플레이어에 거리가 벌어지는 경우가 생긴다. 이때 몹이 단순히 플레이어에게 걸어 오는것보다, 순간적으로 거리를 좁히는게 더 전투에 재미를 가져다 줄 수 있기 때문이다. 흔히 등장하는 대쉬 공격 같은 느낌이다.
Enemy AI Behavior Tree
아래는 현재 Enemy BT 이다.
Random Task노드 활용 : 특정 확률로 타겟을 향해 걸어가거나, 특정 애니메이션과 스킬을 사용하면서 플레이어에게 빠르게 접근하도록 설정해 두었다.
EQS 활용 : 로 플레이어 주위를 돌다가 플레이어와 거리가 멀어지면 스킬을 사용하도록.
이렇게 해서 단순히 "걸어오기 -> 공격"이 아니라, "거리 계산 -> 순간 접근 -> 다시 패턴 반복" 하는 흐름을 가지도록 만들었다.
플레이어 스텟 Widget 변경
원래는 Playable / NonPlayable을 나눠서 HUD를 따로 붙였는데, 관리가 번거로웠다. 그래서 BaseCharacter에서 공통 처리하도록 구조를 변경했다. - HP / MP / Stamina를 통합 - 왼쪽 상단 HUD에 배치 덕분에 캐릭터 추가할 때 HUD를 따로 붙이지 않아도 된다.
보스 몬스터 추가
앞으로 다양한 스킬을 가진 보스 몬스터들을 추가할 계획이라 Data,BT,BP,몬스터 전용 스킬 등을 추가했다. 현재는 프로토타입 단계라 매쉬는 임시지만, 이후 어울리는 모델을 찾을 예정이다.
그 밖에.
아 그리고 이번에 이번에 언리얼엔진 버전 올렸다... 이유는 사용하려는 에셋이 5.4이후 버전이라..언리얼은 에셋이 업그레이드만 되지 다운그레이는 안된다는..
오늘의 핵심 변화: 몹 AI가 단순 추적만 하지 않고 “거리 좁히기 스킬” 사용 HUD 구조를 BaseCharacter 공통 처리로 개선 보스 몬스터 추가 및 확장 준비 프로젝트 버전 5.4로 업그레이드