[Unreal] 07.애니메이션_레이어드 블렌드
본 문서는 어소트락 언리얼엔진 게임프로그래머 양성과정의 강의를 토대로 필기한 내용입니다
애니메이션
스테이트 머신을 활용하여 점프 모션 구현
TopView 게임에서는 구르기나 회피 모션으로 만들 수 있다
점프
- 물리적으로 위로 상승시키는 것
- 올라가는 거에 맞춰서 모션을 매칭시키기
- Ground Locomotion
- 캐시포즈 : 현재 프레임의 포즈를 저장해 두고 사용
- Locomotion + AimOffset
- 조건에 해당하는 미리 저장해둔 캐시포즈를 재생
- 공중 상태일 때, Idle에서 Jump State로 상태 전이
- 예제 BP는 점프상태에서 AimOffset을 지정하기 위해 만들어져 있음
- 점프 매커니즘
- Idle State
- Jump State
- JumpStart
- JumpApex
- JumpPreLand
- Jump_Land
- Apply Additive : Base 모션에서 Additive 모션을 섞어주는 처리 방법
- GroundLoco
- Jump/Fall 두 스테이트로 나뉨 : Jump를 눌렀을 때와 물리적으로 점프가 되어야 하는 상황(Fall)
- Jump 상태에서 바로 Fall로 자동 룰 전환
- 공격도 그라운드 로코모션으로 취급
점프 공격
- 구현 방법
- 점프 어택 몽타주를 새로 만들기
- 기존 공격 몽타주에 점프공격 섹션 추가
레이어드 블렌드
Blend Pose- 여러 개의 포징을 섞을 때 by bool, Enum 등 여러가지 상황에 따라 포징을 섞을 수 있게 분류
- 레이어 분기 : 기준점으로 잡을 필터를 넣어주기
- 뎁스 블렌드 : 적용할 블렌드 깊이를 지정. 양수일 때, 그 지점부터 하위 자식까지의 깊이만큼 지정됨
- 무빙 캐스팅의 경우 : 레이어드 애니메이션을 통해 섞어주기
- 무빙 캐스팅의 취소 예시(코드의 영역)
- 몽타주를 일단 재생 시켜주기
- 스킬 몽타주가 재생 되고 있다면, 몽타주 스탑함수를 통해 재생되는 몽타주를 정지
- 무빙 캐스팅의 취소 예시(코드의 영역)
피격
죽음
열거형을 이용하여 블렌드 포즈를 지정해서 완전 독립적인 상태의 경우 상태 전이를 할 수있다
UENUM(BlueprintType)
enum class EPlayerAnim : uint8
{
Locomotion,
Death
};
UCLASS()
class STUDY_240601_API UPlayerAnimInstance : public UAnimInstance
{
protected:
UPROPERTY(EditAnywhere, BlueprintReadOnly)
EPlayerAnim mPlayerAnim = EPlayerAnim::Locomotion;
public:
void SetPlayerAnimType(EPlayerAnim Anim)
{
mPlayerAnim = Anim;
}
}
다중 캐릭터
- Animation Blueprint Template을 만들기
- 기본 메쉬나 스켈레톤이 없기 때문에 프리뷰가 없다
- ABPT를 상속받는 블루프린트를 만들 수 있다
- 상속받은 자식 템플릿 클래스에는 AnimGraph가 없다
- 템플릿에서 만든 애니메이션을 시퀀스 플레이어에 지정해서 사용 가능