[UE5] 3주차 2번. 캐릭터 상태 추가 (feat. Enum 열거형)
by pmj6541캐릭터는 여러 상태를 가지고 있죠.
참고. Enum 사용할 때 내용 순서를 바꾸지 않도록 주의. 이전 버전에서 버그가 나타났었다고 함.
Enum 클래스를 통한 캐릭터 상태 제어
캐릭터 상태를 나타내는 Enum 열거형 변수를 추가하여 제어하겠습니다. 위 파일을 만든 후 아래 캐릭터 상태들을 추가해주고요.
먼저 해줄것은 Dodge 이벤트 발생 시 캐릭터 상태가 Idle 인지 조건을 걸어줍니다.
이 상태 통과 시 Dodgeing 상태로 변경해주고요. 마무리시 Idle 상태로도 바꿔줍니다.
이걸로 해결된 점
연속구르기 해결됐습니다. 원래는 스페이스 입력 시 연속으로 구르기가 나갔는데, 이 변경점으로 Idle 상태 에서만 구르기가 나가게 되므로 구르기가 끝나야 다음 구르기가 가능하도록 변경되었습니다.
결과물.
더 나은 구조로 변경
사실상 오늘자 내용의 핵심이 아닐까 싶어요.
DataAsset을 통한 애니메이션 집합 구조 변경 이건 위에서 했으니 다음.
E_CharacterState 열거형 변수를 통한 캐릭터 상태별 애니메이션 구현 변경
데이터 에셋 파일을 추가해줍니다. 이건 파일명에 있는대로, Dodging, Arming 등 동작에 관련된 애니메이션 몽타주들을 묶어서 관리하는 파일이에요.
여기서 중요한점. 데이터 에셋이 멤버로 가지는 데이터에 주목할 필요가 있습니다. PrimaryDataAsset을 만들어 주어 멤버가 어떤 형태여야 하는지 구성해봅시다.
내용은 아래와 같아요. 멤버 변수로 커스텀한 몽타주 데이터 배열을 갖고, 그에 따른 get 함수도 하나 만들어줍니다.
여기서 강조한 커스텀한 몽타주 데이터 란.
바로 구조체 입니다. PlayMontageParemeter 라는 이름의 구조체이고, 필요한 내용인 Montage, PlayRate, Section을 넣어줍니다.
각자 의미로는
Montage : 플레이할 몽타주
PlayRate : 재생 속도
Section : 시작 지점
입니다.
이제 Data Asset이 어떤 데이터를 갖는지 파악 했으니 실제 내용을 넣어보죠.
Dodging 에는 두가지 몽타주가 사용됩니다. 백스텝, 구르기. 이 두가지를 한번에 관리해주기 위해 DA_CharacterDodgingData에 두 파일을 넣어줍니다.
이제 적용해야죠.
Character의 변수에 MontageDataMap. 변수를 추가합니다. 이건 캐릭터 상태에 따라 어떤 MontageData가 들어가야 하는지 Map 으로 관리하는 변수입니다.
뭔가 복잡해보입니다만 설명해보면
1. Find Montage Data 함수를 통해 MontageDataMap 에서 'Character State' 변수에 따라 MontageData에 접근합니다.
2. MontageData 에서 방향벡터의 여부에 따라 0(구르기), 1(백스텝) index를 선택합니다.
3. 선택한 Animation Montage를 실행합니다.
정말 쉽죠.
중간 String - Animation 형식의 매핑 (자바에서 쓰던 베이스 테이블 구조) 도 보여주셨는데 자바에서 같은 이유로 사장 된
내용이었으니 참고만 할것.
결론.
여러 애니메이션을 체계적으로 활용할 수 있는 Enumeric과 DataAsset 의 결합을 구현해보았습니다. 이거 잘 써야한다.
'UnrealEngine' 카테고리의 다른 글
[UE5] 3주차 4번. 발도, 납도, 무기교체 구현 (feat. 모듈화) (2) | 2025.01.03 |
---|---|
[UE5] 3주차 3번. 애니메이션 섹션 (0) | 2024.12.30 |
[UE5] 3주차 1번. 발도 후 이동 모션 구현 & Collision 정리 (2) | 2024.12.28 |
[UE5] 2주차 5번. Sword와 함께.. (0) | 2024.12.27 |
[UE5] 2주차 4번. Dodge 구현 (feat. Interface) (0) | 2024.12.24 |
블로그의 정보
만두네민박
pmj6541