AttackSystem
공격 이벤트를 서비스하는 엑터 타입 클래스
- 콤보 공격 구현
- 초기 기획과 동일하게 몽타주 노티파이 커스텀 이벤트를 활용하여 구현완료
- 몬스터 충돌 구현
- raycast와 Apply Damage 함수 활용 구현완료
- 적 Hit 시 다수의 raycast Hit 이벤트가 발생하여 0.2초간의 간격으로 Hit를 다시 호출 가능하게끔 제한했다.
스텟
스텟은 모든 유닛이 상속받을 부모 클래스 baseCharacter에서 접근가능
공격력
- 변수
- 정수형 attack
- Hit 이벤트 호출시 baseCahracter에서 참조하여 AttackSystem 함수에 호출된다.
- 정수형 attack
체력
- 변수
- 정수형 maxHp
- 캐릭터의 최대 체력, 추후 체력바 UI의 정규화의 기준값을 위해 필요하여 추가함.
- 정수형 curHp
- 캐릭터의 현제 체력
- 정수형 maxHp
방어력
추가된 기획 방어력 관련 기획 내용이 없었다..
- 변수
- 정수형 def
- 값에 반비례하여 받는 피해가 줄어든다.
- 정적 정수형 constDef = 1000
- 받은 피해와 방어력이 일동일한 상태에서 체력 - 방어력의 전투공식이
이루어지면 받는 데미지가 0인 문제가 발생한다
위 문제를 피하기위해 방어력 스탯의 수치가 직관적인 연산보다
피해 흡수량 구현을 위해 추가했다.
- 받은 피해와 방어력이 일동일한 상태에서 체력 - 방어력의 전투공식이
- 정수형 def
전투 공식
피해 흡수량 = 방어력 / (방어력 + 정적 방어력)
ex) 피해 흡수량이 0.8의 값이 나오면 80%의 피해를 흡수하고 공격자의 공격력에 20%만을 타겟에게 피해를 입힌다.
스태미너
- 변수
- 정수형 maxStamina
- 캐릭터의 최대 스테미너, 추후 체력바 UI의 정규화의 기준값을 위해 필요하여 추가함.
- 정수형 curStamina
- 캐릭터의 최대 스테미너, 추후 체력바 UI의 정규화의 기준값을 위해 필요하여 추가함.
- 정수형 maxStamina
- 기능
- Shift 누른상태 + Velocity의 존재여부 확인을 컨디션 조건으로
이동중에 0.2초 마다 curStamina를 감소하게 끔 구현
- Shift 누른상태 + Velocity의 존재여부 확인을 컨디션 조건으로
Issue
지난글에서 해결하려했던 루트모션 활성화 디스턴스 매칭, 포즈워핑을 해결하려 시도했지만..
내가 선택한 애니메이션에 다양한 문제를 확인했다..
가장 큰 문제는 내 전사 모델의 최상위 루트 본이 pelvis로 되어있다는게 매우 크다
이건 수정할 방법을 다 찾아봤지만 해결을 할수가없었다..
문제 애니메이션을 리타겟팅도 해보고 블랜더에서 애드온을 써서 직접 해결도 해보려 시도했지만 모두 실패했다..
우선은 기획서에서 우선순위대로 구현하고 다 완성되면 애니메이션과 모델을 모두 수정하기로 했다.
루트모션 활성화에 집착한 이유는 공격시 루트모션이 비활성화되면 적을 뚫고 공격하는 모습이 거슬렸기 때문인데
결국 해결이 안되서 무척 아쉽다.
'게임 프로그래밍' 카테고리의 다른 글
UE5 GameMode Setup Code (0) | 2024.03.21 |
---|---|
언리얼5 코딩표준 (0) | 2024.03.20 |
1_2 이동(Locomotion) + 레벨디자인 (0) | 2024.02.06 |
1_1 이동(Locomotion) + 애니메이션 구현 (0) | 2024.02.03 |
언리얼5.2 몬스터헌터 기획 (2) | 2024.01.31 |