본문 바로가기

게임 프로그래밍

3 스텟 구현 + 공격력

AttackSystem

공격 이벤트를 서비스하는 엑터 타입 클래스

  • 콤보 공격 구현
    • 초기 기획과 동일하게 몽타주 노티파이 커스텀 이벤트를 활용하여 구현완료
  • 몬스터 충돌 구현
    • raycast와 Apply Damage 함수 활용 구현완료
    • 적 Hit 시 다수의 raycast Hit 이벤트가 발생하여 0.2초간의 간격으로 Hit를 다시 호출 가능하게끔 제한했다.

스텟

스텟은 모든 유닛이 상속받을 부모 클래스 baseCharacter에서 접근가능

공격력

  • 변수
    • 정수형 attack 
      • Hit 이벤트 호출시 baseCahracter에서 참조하여 AttackSystem 함수에 호출된다.

 

체력

  • 변수
    • 정수형 maxHp
      • 캐릭터의 최대 체력, 추후 체력바 UI의 정규화의 기준값을 위해 필요하여 추가함.
    • 정수형 curHp
      • 캐릭터의 현제 체력

방어력

추가된 기획 방어력 관련 기획 내용이 없었다..

 

  • 변수
    • 정수형 def
      • 값에 반비례하여 받는 피해가 줄어든다.
    • 정적 정수형 constDef = 1000
      • 받은 피해와 방어력이 일동일한 상태에서 체력 - 방어력의 전투공식이
        이루어지면 받는 데미지가 0인 문제가 발생한다
        위 문제를 피하기위해 방어력 스탯의 수치가 직관적인 연산보다
        피해 흡수량 구현을 위해 추가했다.

전투 공식

피해 흡수량 = 방어력 / (방어력 + 정적 방어력)

ex) 피해 흡수량이 0.8의 값이 나오면 80%의 피해를 흡수하고 공격자의 공격력에 20%만을 타겟에게 피해를 입힌다.

스태미너

  • 변수
    • 정수형 maxStamina
      • 캐릭터의 최대 스테미너, 추후 체력바 UI의 정규화의 기준값을 위해 필요하여 추가함.
    • 정수형 curStamina
      • 캐릭터의 최대 스테미너, 추후 체력바 UI의 정규화의 기준값을 위해 필요하여 추가함.
  • 기능
    • Shift 누른상태 + Velocity의 존재여부 확인을 컨디션 조건으로
      이동중에 0.2초 마다 curStamina를 감소하게 끔 구현

 


Issue

지난글에서 해결하려했던 루트모션 활성화 디스턴스 매칭, 포즈워핑을 해결하려 시도했지만..

내가 선택한 애니메이션에 다양한 문제를 확인했다..

가장 큰 문제는 내 전사 모델의 최상위 루트 본이 pelvis로 되어있다는게 매우 크다

이건 수정할 방법을 다 찾아봤지만 해결을 할수가없었다..

문제 애니메이션을 리타겟팅도 해보고 블랜더에서 애드온을 써서 직접 해결도 해보려 시도했지만 모두 실패했다..

우선은 기획서에서 우선순위대로 구현하고 다 완성되면 애니메이션과 모델을 모두 수정하기로 했다.

루트모션 활성화에 집착한 이유는 공격시 루트모션이 비활성화되면 적을 뚫고 공격하는 모습이 거슬렸기 때문인데

결국 해결이 안되서 무척 아쉽다.