액터를 특정 방향으로 움직이고 싶을 때!
언리얼의 커브를 사용해서 다양한 방향으로 엑터를 움직이게 할 수 있다!
Vector Curve를 C++으로 가져와서 사용하는 방법에 대해 알아보자!
커브 (Curve / UCurvebase)는 보간되는 여러 포인트로 이루어진 트랙을 말하며,
트랙은 시간과 값을 정의하는 키가 있다.
커브는 키 사이를 보간해 타임라인의 특정 지점에 대한 값을 계산한다.
Miscellaneous -> Curve 에서 생성 할 수 있다.
Curve는 3가지가 있다.
CurveFloat (UCurveFloat)
CurveLinearColor (UCurveLinearColor)
CurveVector (UCurveVector)
그 중에 CurveVector를 이용하여 액터를 움직여보도록 하자
Vector Curve를 생성하면 X축, Y축, Z축이 있다.
가로축은 시간이고 새로축은 거리가 되겠다.
Add key를 하여 원하는 방향으로 설정을 한다.
Actor를 기반으로 C++ 클래스를 생성하였다.
헤더 파일에 Vector Curve를 담을 변수를 만들어주고
UPROPERTY(Editanywhere, Category = "Moving Cube")
UCurveVector* MovementCurve;
C++기반으로 Blueprint를 만들면 요렇게 내가 만든 Vector Curve를 할당해 줄 수 있다.
Vector Curve의 값을 가져와서 액터의 위치를 업데이트하는 함수를 만든다.
void AMovingCube::MovePosition(FVector Value)
{
if(MovementCurve)
{
FVector curPos = InitialPosition + Value * 100.f;
SetActorLocation(curPos);
}
}
timeline vector track라는 함수 시그니처를 사용하는데
FOnTimelineVector TimelineCallback;
FTimeline CurveTimeline;
만들어둔 MovePosition 함수에 TimelineVector을 바인딩하고,
백터 보간을 타임라인에 추가 하고,
반복할지 정하고,
처음부터 시작하게 하면 끝난다.
TimelineCallback.BindDynamic(this, &AMovingCube::MovePosition);
CurveTimeline.AddInterpVector(MovementCurve, TimelineCallback);
CurveTimeline.SetLooping(true);
CurveTimeline.PlayFromStart();
아직은 다양한 활용을 하지 못하지만
좀 더 익숙해지면 재미있게 쓸 수 있는 기능같다!
참고 링크:
'Unreal Engine' 카테고리의 다른 글
UE5 Team Project::Stack Block - 제대로 동작하는지 간단하게 확인해보기 (0) | 2024.07.24 |
---|