• [Unreal 게시판] ani의 특정 시점에서 다른 기능을 수행하는 방법2015.02.25 PM 01:00

게시물 주소 FONT글자 작게하기 글자 키우기

Question>

unreal engine 4에서 작업 중인데요.
character를 움직이게 하기 위해 아래와 같은 함수를 사용했습니다.

UAnimInstance *Use_AnimInstance;

Use_AnimInstance = GetMesh()->Anims!cripInstance;
Use_AnimInstance->Montage_Play( Montage, PlayRate );

이 animation의 특정 시점에서 다른 기능을 수행하고 싶습니다.
어떻게 구현하면 되겠습니까?

-------------------------------------------------------------

Answer>

아래 link 참고하시고요.

https://docs.unrealengine.com/latest/KOR/Engine/Animation/Sequences/Notifies/index.html

link 내용대로 'Animation Notify'를 사용하시면 되고요.
'Anim Montage'에서 설정하시면 됩니다.

'Anim Montage'에서 설정하신 notify는 아래의 변수에서 확인하실 수 있습니다.^^

class ENGINE_API UAnimInstance : public UObject
{
(중략)
TArray AnimNotifies;
(중략)
}

즉 만드신 notify는 'struct FAnimNotifyEvent' 형태로 보관되므로,
animation이 재생되기 전에 어떤 notify가 언제 있을 지를 알 수 있습니다.^^
이를 이용해서, tick이나 timer로 notify를 파악하여
특정 시점에 원하시는 기능을 수행도록 code를 작성하시면 됩니다~ ^^


혹시, 이게 불편하시면..^^;;;
아래와 같이 delegate 함수를 이용하시는 것도 좋은 방법입니다.

class SBlendSpaceWidget : public SCompoundWidget
{
(중략)
FOnNotifyUser OnNotifyUser;
(중략)
}

해당 notify의 시간에 이르게 되면, 'OnNotifyUser'에 님이 저장한
delegate 함수가 호출됩니다. 이 때, 원하시는 기능을 수행도록 code를 작성하시면 됩니다~ ^^


후자의 방법이 전자의 방법보다 편하기는 하지만,
후자의 방법은 slate를 이용한 방법이기 때문에 slate 기반으로 만드는 경우가 아니라면,
전자의 방법을 이용하시는 게 좋다고 봅니다.^^







Tag:
안기훈, Kee Hoon Ahn, 언리얼, Unreal, UDK, iPhone, iPad, app, 앱, iOS
댓글 : 0 개
친구글 비밀글 댓글 쓰기