부비새
부비새의 개발 일기
부비새
전체 방문자
오늘
어제
  • Category (70)
    • Project (7)
      • NightAtTheGallery (1)
      • GGWP - DEADLINE (6)
    • ToyProject (41)
      • RedCaped (33)
      • EcoA76 (2)
      • SkyTemple (6)
    • GAS (2)
      • 개인저장용 (2)
    • PCG (4)
    • UE5 (12)
      • 공부 (9)
      • C++ (1)
      • 놀이터 (2)
    • Houdini (3)
      • 공부 (3)
    • OpenGL (1)

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
부비새

부비새의 개발 일기

[언리얼엔진 5] 7. Current Player State + Error Handling
ToyProject/RedCaped

[언리얼엔진 5] 7. Current Player State + Error Handling

2022. 12. 30. 16:29

이전 플레이어 스테이트를 따루 두지 않고 boolean으로 행동을 통제했다. 하지만 이렇게 진행하니 boolean타입을 난발하고 여러 문제가 발생하기 시작했다. 이상태에서 또 다른 행동을 추가한다면 큰 사고다..

그렇기에 플레이어에게 현재 상태를 나타내는 변수를 생성해 이 변수로 행동을 통제하기로 하였다.

기존 구르기나 공격을 실행할 때 여러 boolean값을 통제하였다

Player state는 여러 현재 상태를 나타낼 수 있게 열거형(Enum)으로 생성하여 여러가지 State를 나타내었다.

변수가 하나로 통일되어 변수관리가 간단해졌다

 

계속 여러 행동을 추가할텐데 이제는 열거형변수에 추가만 하면 플레이어의 상태를 쉽게 나타낼 수 있게 되었다!


하지만 하나의 문제가 생겼다. 공격키를 연타하면 어느순간 플레이어가 멈추는 현상이 발생했다. 이때 구르기로 상황을 탈출할 수는 있었지만 불편하고 오류임이 확실하기에 원인을 알아보았다. 

공격 애니메이션이 끝날 때쯤 EndAttack 노티파이를 호출
EndAttack 노티파이의 모습

겉보기에는 아무런 문제가 없어 보였다. 공격 애님이 끝나면 state 값을 Idle로 바꾸어주면 다시 움직일 수 있기 때문이다. 하지만 연타를 하면 어느순간 멈춘다. 나는 이 문제의 원인을 Transition Rule에서 찾았다.

왼쪽은 기존 / 오른쪽은 변경 후

기존은 애니메이션 진행이 95퍼가 진행되면 Idle 애니메이션을 실행시키라는 명령문이다. 이렇게 되면 어떤 상황이던 95퍼가 지나면 공격애니메이션이 중단되고 Idle 애니메이션을 실행시킨다. 여기서 문제가 발생한다고 생각했다.

기존 공격 애니메이션이 끊기면 EndAttack 노티파이가 호출되지 않기 때문이다. 공격연타를 하면 한번 끊킬 수 있기에 애니메이션 진행으로 애니메이션을 통제하는 것이 아닌 State가 idle이 되야 Idle 애니메이션을 실행시키게 하였다.


몬스터들 State를 두어 관리해야겠다.

귀여운 눈땡이

 

'ToyProject > RedCaped' 카테고리의 다른 글

[언리얼엔진 5] 9. Pet Class  (0) 2023.01.03
[언리얼엔진 5] 8. Particle and Collision Attack  (0) 2023.01.02
[언리얼엔진 5] 6. FloatingDamage and Critical  (0) 2022.12.28
[언리얼엔진 5] 5. Player Attack  (0) 2022.12.27
[언리얼엔진 5] 4. AI Attack  (0) 2022.12.27
    부비새
    부비새
    언리얼엔진과의 싸운 흔적입니다

    티스토리툴바