묻공러
언리얼 Animation - AnimInstance
묻공러
묻지마공부
묻공러
전체
오늘
어제
  • 분류 전체보기 (530) N
    • C (54)
      • [코드조선] C 핵심 (35)
      • [언어본색] C 기초 (19)
    • C++ (72)
      • [루키스] C++ (9)
      • [루키스] 콜백함수 (6)
      • [루키스] STL (8)
      • [루키스] Modern C++ (11)
      • [노코프] C++ (10)
      • [노코프] Tips (16)
      • [일지] C++ (12)
    • C# (20)
      • [루키스] C# (9)
      • [루키스] 자료구조 (3)
      • [루키스] 실전 문법 (8)
    • 자료구조 & 알고리즘 (50)
      • [코드조선] C 자료구조 & 알고리즘 (6)
      • [합격자되기] C++ 코딩테스트 (12)
      • [루키스] C++ 자료구조 & 알고리즘 (32)
    • CS (69)
      • [널널한 개발자] CS 개론 (19)
      • [혼자 공부하는] 컴퓨터 구조 (16)
      • [혼자 공부하는] 운영체제 (18)
      • [널널한 개발자] 네트워크 (16)
    • 게임 그래픽스 (46)
      • [전북대] OpenGL (25)
      • [일지] DirectX (21)
    • 게임 엔진 - 언리얼 (123)
      • [코드조선] 언리얼 (53)
      • [코드조선] 언리얼 데디서버 (8)
      • [일지] 언리얼 (59)
      • [일지] 언리얼 (2) (3)
    • 게임 엔진 - 유니티 (23) N
      • [최적화] 유니티 (4)
      • [루키스] 유니티 (19) N
    • 게임 서버 (17)
    • 게임 수학 & 물리 (19)
      • 게임 수학 (12)
      • 게임 물리 (7)
    • GIT & GITHUB (4)
    • 영어 (18)
      • [The Outfit] 대본 공부 (11)
      • the others (7)
    • 그 외 (14)
      • In (5)
      • Out (5)
      • Review (4)

인기 글

최근 글

hELLO · Designed By 정상우.
게임 엔진 - 언리얼/[코드조선] 언리얼

언리얼 Animation - AnimInstance

2024. 5. 14. 10:10

AnimInstance
스켈레탈 메시를 소유한 폰의 정보를 받아서
Anim Graph 가 참조할 데이터를 제공한다

블루프린트와 C++로 구현 가능하다
AnimInstance의 블루프린트 애셋에는 Anim Graph 기능이 제공된다

 

Anim Graph
업데이트된 변수 값에 따라 지정된 애니메이션을 재생하고 제어하는 부분이다
상황에 따라 적합한 애니메이션을 체계적으로  재생할 수 있도록

스테이트 머신 기능을 활용할 수 있고

블루프린트로만 구현 가능하다

AnimInstance를 상속받는 EventGraph와 AnimGraph

 

AnimInstance 생성  
폰의 속도에 따라 다른 애니메이션을 재생하기 위해서는
프레임마다 폰의 속력과 AnimInstance의 CurrentSpeed 속성을 연동해야 한다

연동하는 방법은 아래 두 가지가 있다

1. 폰의 Tick() 함수에서 AnimInstance의 CurrentSpeed 속성 업데이트
2. AnimInstance의 Tick() 함수에서 폰의 정보를 가져와서 CurrentSpeed 속성 업데이트
객체 지향 프로그래밍에서는 2번의 형태로 개발하는 것이 좋다

 

추가적으로

폰에서 AnimInstance를 참조하려면, GetAnimInstance()를 통해 가져올 수 있다

반면, AnimInstance에서 폰을 참조하려면, TryGetPawnOwner()를 통해 가져올 수 있다

그 이유는

게임 플레이 플로우는 Input > Game Logic (Pawn) > Animation의 단계를 거친다

Game Logic 단계에서 Pawn이 사라지는 경우가 발생하고

Animation 단계로 넘어오는 경우가 있기에, AnimInstacne는 Pawn을 TryGet 한다

반면, Game Logic 단계에서 AnimInstance는 항상 존재하기 때문에 Get을 사용한다

// SAnimInstance.h

#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimInstance.h"
#include "SAnimInstance.generated.h"

/**
 * 
 */
UCLASS()
class STUDYPROJECT_API USAnimInstance : public UAnimInstance
{
	GENERATED_BODY()

public:
	USAnimInstance();

	virtual void NativeUpdateAnimation(float DeltaSeconds) override;

protected:
	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="SAnimInstance", meta=(AllowPrivateAccess))
	float CurrentSpeed;

};
// SAnimInstance.cpp


#include "Animation/SAnimInstance.h"
#include "Character/SPlayerCharacter.h"
#include "GameFramework/CharacterMovementComponent.h"

USAnimInstance::USAnimInstance()
{
}

void USAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
	Super::NativeUpdateAnimation(DeltaSeconds);

	ASCharacter* OwnerCharacter = Cast<ASCharacter>(TryGetPawnOwner());

	if (IsValid(OwnerCharacter) == true)
	{
		UCharacterMovementComponent* CharacterMovementComponent = OwnerCharacter->GetCharacterMovement();
		if (IsValid(CharacterMovementComponent) == true)
		{
			CurrentSpeed = CharacterMovementComponent->GetLastUpdateVelocity().Size();
		}
	}
}

 

Tip 1

애님 그래프의 노드의 연결을 끊는 단축키는

alt를 누른 상태로 노드를 클릭하면 된다

 

Tip 2

애님 그래프뿐만 아니라 블루프린트에서

컴파일 시에 자동 저장 기능을 활용해서 설정하면 편하다

 

Tip 3

SAnimInstance 클래스의 속성이 보이지 않는 경우에는

설정을 통해 변수를 노출시킬 수 있다

 

Tip 4

조건에 따른 다른 애니메이션을 작동하게 하고 싶다면

Blend Poses by bool을 사용하면 된다

 

Tip 5

애니메이션 종료 시 자동으로 스테이트가 전환되게 하려면,

Automatic Rule Based on Sequence Player in Slate 속성을 사용하거나
Time Remaining 노드를 활용할 수도 있다

저작자표시 비영리 변경금지 (새창열림)

'게임 엔진 - 언리얼 > [코드조선] 언리얼' 카테고리의 다른 글

언리얼 Animation - Animation Montage  (0) 2024.05.14
언리얼 Animation - State Machine  (0) 2024.05.14
언리얼 View - Control Rotation  (0) 2024.05.14
언리얼 Character - Character 클래스 생성  (0) 2024.05.13
언리얼 Character - Enhanced Input System  (0) 2024.05.13
'게임 엔진 - 언리얼/[코드조선] 언리얼' 카테고리의 다른 글
  • 언리얼 Animation - Animation Montage
  • 언리얼 Animation - State Machine
  • 언리얼 View - Control Rotation
  • 언리얼 Character - Character 클래스 생성
묻공러
묻공러
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.