2024-05-29
깃허브! |
---|
★ hhttps://github.com/ChangJin-Lee/Multiplayer-Puzzle-Platform |
Udemy 언리얼 C++ 멀티플레이어 마스터 : 중급 게임 개발 강의를 수강하며 알게된 내용과 깨달은 점을 적은 글입니다.
BeginPlay에서 처음 위치를 저장해두고 Tick에서 원하는 위치까지 계속해서 업데이트하고 가까워졌을때 방향벡터가 반대로 되도록 만든다. 즉 방향벡터를 바꾸는 Swap 함수를 만들면 된다.
Platform 이라는 Actor가 있다고 하자.
각 위치는 GetActorLocation()으로 가져오면 된다.
A : 처음 위치
B : 타겟 위치
A 지점부터 B 지점까지 이동했다가 A 지점으로 돌아오게 하고 싶다.
먼저 FVector 사이의 방향을 구해야한다.
그럼 정규화는 왜 해야할까?
언리얼에서는 로컬 좌표와 월드 좌표가 차이가 나기때문에 이를 보완해주어야한다.
GlobalTargetLocation = GetTransform().TransformPosition(TargetLocation);
https://docs.unrealengine.com/4.26/en-US/API/Runtime/Core/Math/FVector/GetSafeNormal/
OriginalDirection = (GlobalTargetLocation - GlobalOriginalLocation).GetSafeNormal();
FVector::PointsAreNear(CurrentLocation, GlobalTargetLocation, 1);
SetActorLocation(CurrentLocation + Direction * Lambda * DeltaSeconds);