[Unreal] 07.애니메이션_레이어드 블렌드

본 문서는 어소트락 언리얼엔진 게임프로그래머 양성과정의 강의를 토대로 필기한 내용입니다

애니메이션

스테이트 머신을 활용하여 점프 모션 구현
TopView 게임에서는 구르기나 회피 모션으로 만들 수 있다

점프

  1. 물리적으로 위로 상승시키는 것
  2. 올라가는 거에 맞춰서 모션을 매칭시키기
  • 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가 없다
      • 템플릿에서 만든 애니메이션을 시퀀스 플레이어에 지정해서 사용 가능

© 2023 Jinsoo Lee. All rights reserved.

Powered by Hydejack v9.1.6