[UE5] MeleeMonster

윤정민·2023년 4월 18일
0

1. 개요

창설 프로젝트를 들어가면서 로그라이크 게임을 만들기로 했다. 내 역할은 Monster Part중 Melee들을 만든다.

2. Monster Class Struct

이 글을 보는 누군가가 있다면 이딴식으로 클래스설계를 하지말길 바란다. 이렇게 행동을 객체로 표현하게되면 두 행동을 하는 객체를 따로 만들어야 된다. 그렇기 때문에 행동자체를 인터페이스로 구현하고 인터페이스를 상속받는 클래스를 만들도록하자

2.1 MonsterBase

  • MonsterBase: 모든 캐릭터가 공유하는 행동을 작성
    • Dead(): 콜리전을 끄고 죽는 애니메이션 실행
    • Attack(): 순수가상함수로 선언하여 몬스터마다 공격시 행위를 작성할 수 있음
    • AttackStart(): 순수가상함수로 선언하여 몬스터마다 공격 시작 시 행위를 작성할 수 있음
    • AttackEnd(): 순수가상함수로 선언하여 몬스터마다 공격이 끝날 시 행위를 작성할 수 있음
    • TakeDamage(): HP감소 및 피격 애니메이션 실행
    • HealthPoint, Speed, Attack Speed등을 변수로 선언함(상속받은 클래스에서 초기화 해주면 됨)
  • MeleeMonsterBase: 근접 몬스터들이 공유하는 행동을 작성
    • ComboAttack(): 콤보 공격을 위한 공격 애니메이션 index 변경 기능 작성
    • OnMontageEnded(): OnMontageEnded 델리게이트에 바인딩해줄 함수로 MeleeMonster의 BehaviorTree동작을 위해 Montage가 시작될때 Wait되도록 만들고 끝나면 다시 BT가 작동하도록 만들어줌
    • Stun(): 팅겨나가면 Stun되도록 BT를 Wait로 바꿔줌
  • 실제 몬스터들: Mesh를 설정해주고 Melee공격을 위한 Collision을 설정해주었다.

2.2 MonsterAIController

3. Melee Attack

근접공격의 방법은 다양하다. 이전 프로젝트에서는 공격시 전방에 콜리전을 생성하는 방법을 선택했지만 이번에는 Monster에 Collision Component를 생성하고 공격때 마다 Collision을 On/Off시켰다.

4. Behavior Tree

  • NotDead: 죽지 않았다면 BT를 실행
  • IsStun?: 어떤 행위를 하든 Stun이 활성화 되면 Wait
  • TargetOn: 플레이어를 보게되면 따라가서 공격
  • TargetOff: 플레이어를 보지못했다면 감지를 위한 Detect 서비스를 실행

간단하지만 생각보다 발생하는 오류가 다양했다. BT 이쁘게 짠 Project들을 더 뜯어봐야겠다.

5. Damage

  • 데미지를 받으면 타격감을 높이기 위해 blood Particle을 생성함

6. Death Material

  • 죽게되면 Material의 Opacity 변경
    • 무기들의 Opacity도 변경하기 위해 Opacity를 변경할 SkeletalMesh들을 배열에 저장해 줌
  • Opacity가 0에 가까워진 가장자리들을 발광으로 표현하기위해 Emissive Color를 설정해주자

7. Level Design

던전에 사용될 Level을 만들었는데 마음에 안든다.. 우리학교에도 레벨디자이너가 있었으면 좋겠지만 없으면 없는대로 살아야지

profile
그냥 하자

0개의 댓글