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
(중략)
}
즉 만드신 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