


#핵심 함수
- FMath::VInterConstantTo(현재 위치, 목표 위치, 델타 타임, 이동속도)
- 현재 위치에서 목표 위치로 이동하는 데 얼마의 속도로 이동할거냐.
- 델타 타임을 넣어주는 이유는 FMath가 델타 타임을 직접 호출할 방법이 없어서
목표 위치로 이동할 때, 순간이동하듯이 사라지는게 아니라 부드럽게 이동하도록 하기 위해 특정 속도로 두 벡터 사이를 보간(Interpolate)한다.
Vector Interpolate Constant To
Q. 왜 상수(Constant)여야 하는가?
A. 일정한 속도로 이동시키고 싶어서. Const를 붙이지 않으면 목표 위치에 가까워질수록 느려진다. 즉, 감속이 발생한다.
Speed = 총 거리(목표 위치 - 최초 위치) / 총 시간
여기서 핵심은 거리를 구할 때, 현재 위치가 아니라 최초 위치에서 목표 위치까지 거리를 계산하여 항상 '총 거리'로 스피드를 구하는 것
그러면 FMath::VInterConstantTo()에서
1. 현재 위치에서 목표 위치까지 이동할 방향 벡터를 구하고
- Direction = Normalize(TargetLocation - CurrentLocation)
2. 이동할 거리를 계산하고
- MoveDistance = Speed * DeltaTime
3. 최종적으로 이동할 새 위치를 계산한다.
- NewLocation = CurrentLocation + (Direction * MoveDistance)
4. (예외처리) 목표 위치를 초과했다면 목표 위치로 조정한다.
- if (abs(NewLocation.Length()) > abs(TargetLocation.Length()))
return TargetLocation
Q. 왜 AddActorLocation이 아니라 SetActorLocation인가?
A. FMath::VInterConstantTo()의 결과값이 다음 프레임에 액터가 정확히 위치해야 할 월드 좌표이기 때문에.
이동량(Vector)가 아니라 이동한 위치(Point)를 반환한다.
'Unreal Engine > 기능 구현' 카테고리의 다른 글
| [Unreal Engine 5] 이동 경로에 있는 충돌체 미리 감지하기 (0) | 2025.06.16 |
|---|---|
| [Unreal Engine 5] Draw Debug Line (0) | 2025.06.16 |
| [Unreal Engine 5] 루멘 적용 후 부자연스러울 때 체크 (0) | 2025.06.15 |
| [Unreal Engine 5] 빈 레벨에 태양 광원 만들기 (0) | 2025.06.15 |
| [Unreal Engine 5] 플레이어 시작 위치 지정하기 (0) | 2025.06.13 |
