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

인기 글

최근 글

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

언리얼 Animation - Animation Notify

2024. 5. 14. 10:40

애니메이션 노티파이
애니메이션을 재생하는 동안 

원하는 타이밍에 애님 인스턴스의 멤버 함수를 호출하는 기능이다
애니메이션 노티파이는 애니메이션 시퀀스와 애니메이션 몽타주 모두 사용가능하다

애니메이션 노티파이의 활용
공격 애니메이션인 경우에 특정 애니메이션 프레임에서

충돌 검사 로직을 처리해야 한다
이때 애니메이션 노티파이를 활용하면 구현이 가능하다

애니메이션 노티파이 실습
Notifies 섹션 빈 공간에 우클릭을 하고
Add Notify를 통해 노티파이를 만들 수 있다
3번 공격을 하는 경우라면, 적절한 위치에 CheckHit Notify를 3개 작성하면 된다  

 

그리고 AnimInstance에 “AnimNotify_노티파이명()”의 멤버 함수와

BroadCast할 멤버 변수를 만들어줘야 한다

또한 UHT에 의해 언리얼 시스템이 찾을 수 있도록 

UFUNCTION() 매크로가 작성해야 한다

// SAnimInstance.h

...

DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnCheckHit);

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

public:
	...

protected:
	UFUNCTION()
	void AnimNotify_CheckHit()
	{
		if (OnCheckHit.IsBound() == true) 
		{
			OnCheckHit.Broadcast();
		}
	}

public:
	FOnCheckHit OnCheckHit;

protected:
	...

};

 

// SPlayerCharacter.h

...
class STUDYPROJECT_API ASPlayerCharacter : public ASCharacter
{
	...

public:
	void ASPlayerCharacter::BeginPlay()
	{
		...
		if (IsValid(AnimInstance) == true)
		{
			...
			AnimInstance->OnCheckHit.AddDynamic(this, &ThisClass::OnCheckHit);
		}
	}

	UFUNCTION()
	void ASPlayerCharacter::OnCheckHit()
	{
		UKismetSystemLibrary::PrintString(this, FString::Printf(TEXT("CheckHit() has been called."))); 
	}
	
protected:
	...
};

 

콤보 공격 구현시 주의점 1

애니메이션이 드래그 드랍해서 놓게 되면

연속되어 계속 재생되기 때문에

Montage Sections에서 각 애니메이션을 끊어주어야 한다

 

콤보 공격 구현시 주의점 2

AnimNotify의 Montage Tick Type을 Queued로 설정하게 되면

상황에 따라 AnimNotify가 발생하지 않는 경우가 있을 수 있기에

반드시 실행되어야 하는 AnimNotify는

Montage Tick Type을 Branching Point로 지정해야 한다

저작자표시 비영리 변경금지

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

언리얼 Collision - 충돌 감지  (0) 2024.05.15
언리얼 Collision - 충돌 설정  (0) 2024.05.15
언리얼 Animation - Animation Montage  (0) 2024.05.14
언리얼 Animation - State Machine  (0) 2024.05.14
언리얼 Animation - AnimInstance  (0) 2024.05.14
'게임 엔진/[코드조선] 언리얼' 카테고리의 다른 글
  • 언리얼 Collision - 충돌 감지
  • 언리얼 Collision - 충돌 설정
  • 언리얼 Animation - Animation Montage
  • 언리얼 Animation - State Machine
묻공러
묻공러
상단으로

티스토리툴바

개인정보

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

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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