득이공간

[언리얼 게임 프레임웍의 이해] 2장. 캐릭터의 애니메이션 설정 본문

GP/UE5

[언리얼 게임 프레임웍의 이해] 2장. 캐릭터의 애니메이션 설정

쟁득 2024. 2. 7. 21:51
해당 게시물은 이득우 교수님의 '언리얼 게임 프레임웍의 이해' 강의를 수강하며
학습한 내용을 개인적으로 정리한 글입니다.

📌 목차 - 2장. 캐릭터의 애니메이션 설정

2-1. 캐릭터 애니메이션 설정
2-2. 캐릭터 콤보 액션
2-3. 캐릭터 공격 판정


📌 2-1. 캐릭터 애니메이션 설정

1. C++클래스를 상속받은 애니메이션 블루프린트의 생성 방법의 이해
2. 이벤트 그래프와 애님 그래프로 구성된 애니메이션 블루프린트의 구조 파악
3. 애님 그래프를 사용한 애니메이션 시스템의 설계 방법의 학습

 

* 이번 강의에서 다룬 게임 프레임웍 기능
- 폰: 모션

* 캐릭터 애니메이션 시스템의 생성
- 스켈레탈 메시 컴포넌트의 애니메이션 블루프린트 클래스를 지정한다.
- 캐릭터가 초기화될 때 AnimInstance 클래스의 인스턴스를 생성한다.
- 캐릭터는 GetAnimInstance 함수를 사용해 애니메이션 인스턴스를 얻을 수 있다.
- 애니메이션 인스턴스는 GetOwningActor 함수를 사용해 자신을 소유한 액터 정보를 얻을 수 있다.
- ACharacter -GetAnimInsatnce()-> UAnimInstance
- ACharacter <-GetOwningActor()- UAnimInstance

* 캐릭터 애니메이션 시스템의 설계
- 애니메이션 블루프린트는 이벤트 그래프와 애님 그래프의 두 영역으로 구성되어 있다.
- 이벤트 그래프에서는 이벤트로부터 상태를 파악할 수 있는 주요 변수를 저장한다.
- 애님 그래프에서는 저장된 변수로부터 지정된 상태의 애니메이션을 재생한다.
- 애님 그래프의 복잡한 상태는 State Alias로 분리해 효과적으로 설계할 수 있다.
- 이벤트 그래프: NativeInitializeAnimation, NativeUpdateAnimation
- 애님 그래프: Land Mode <- NotIsFalling(), IsFalling() -> Falling Mode


📌 2-2. 캐릭터 콤보 액션

1. 애니메이션 몽타주 활용 방법의 이해
2. 데이터 애셋을 활용한 콤보 로직의 구현
3. 언리얼 델리게이트를 사용한 이벤트 콜백의 구현

 

* 이번 강의에서 다룬 게임 프레임웍 기능
- 폰: 액션

* 애니메이션 몽타주
- 몽타주(Montage): 이미지 일부를 잘라내 한 화면에서 합성하는 회화 기법
- 애니메이션 클립을 잘라내고 합성한 후 이를 재생하는 애니메이션 기능
- 애니메이션 클립을 모아둔 다수의 섹션으로 구성되어 있다.
- 섹션끼리 연동할 수 있으며, 스크립트를 통해 원하는 섹션으로 건너뛸 수 있다.

* 콤보 공격의 기획
- 콤보 정보를 저장한 데이터 애셋의 생성
- 각 콤보마다 입력을 테스트하는 프레임을 지정 (마지막 프레임 제외)
- 테스트 프레임 전에 입력이 들어오면 다음 몽타주 섹션으로 이어서 재생
- 테스트 프레임보다 입력이 늦으면 해당 섹션을 마저 플레이하고 종료

* 콤보 공격의 구현
- ABCharacterPlayer(AttackInput) -> ABCharacterBase(Combo Command)
-> Combo Playing?
-> No -> Combo Begin, Combo End Event / -> Yes -> Check Next Combo
-> Play Combo Montage, Combo Check Timer
-> Combo End


📌 2-3. 캐릭터 공격 판정

1. 공격 판정 구현을 위한 물리 트레이스 채널 및 프로필 설정
2. 디버그 드로잉 기능을 활용한 충돌 디버깅
3. 대미지 프레임웍을 사용한 대미지 전달
4. 델리게이트와 람다함수의 간편한 활용

 

* 이번 강의에서 다룬 게임 프레임웍 기능
- 폰: 모션

* 캐릭터 액션의 충돌 판정
- 월드가 제공하는 충돌 판정 서비스 사용
- 월드 내 배치된 충돌체와 충돌하는지 파악하고, 충돌한 액터 정보를 얻을 수 있다.
- 충돌 판정 서비스: LineTrace(선 투사), Sweep(도형 투사), Overlap(영역 판정)

* 트레이스 채널과 충돌 프로필 생성
- 액션 판정을 위한 트레이스 채널의 생성: ABAction
- 캐릭터 캡슐용 프로필: ABAction 트레이스 채널에 반응. 오브젝트 타입 = Pawn
- 스켈레탈 메시용 프로필: 랙돌 구현을 위해 활용
- 기믹 트리거용 프로필: Pawn 캡슐에만 반응. 오브젝트 타입 = WorldStatic

* 월드 트레이싱 함수의 선택
- 세 가지 카테고리로 원하는 함수 이름을 얻을 수 있다.
- {처리방법}{대상}{처리설정}
1. 처리 방법
- LineTrace: 선 투사
- Sweep: 도형 투사
- Overlap: 영역 판정
2. 대상
- Test: 무언가 감지되었는지를 테스트
- Single or AnyTest: 감지된 단일 물체 정보를 반환
- Multi: 감지된 모든 물체 정보를 배열로 반환
3. 처리 설정
- ByChannel: 채널 정보를 사용해 감지
- ByObjectType: 물체에 지정된 물리 타입 정보를 사용해 감지
- ByProfile: 프로필 정보를 사용해 감지

* 물리 충돌 테스트
- 디버그 드로잉 함수를 사용해 물리 충돌을 시각적으로 테스트
- 90도로 회전시킨 캡슐을 그리기: Origin, HalfHeight, Radius