멤버 함수 사용
현재 무사히 앞 뒤로 움직이는 것까지 완료한 상태이다.
하지만 속도 값을 1000으로 변경 후 다시 실행해보면 여전히 시작점을 지나치며 움직이는 현상이 발생할 수 있다.
현재 if문은 끝 지점을 지나쳐야만 하는데, 이때 지나치는 정도가 델타타임에 따라 다르게 되기 때문이다.
델타타임은 속도에 영향을 받기 때문에, 속도가 빠를수록 심해지고, 시간이 지날수록 거리에 오차가 점점 심해질 수 있다.
이를 개선하기 위해서는 원래 시작 위치에서 목표로 한 위치로 가려면 얼마나 이동해야 하는지 미리 계산을 해주는 것이다.
먼저 속도는 화살표로 나타낼 수 있고 방향과 크기를 갖는다.
설정한 만큼만 이동하고 멈추는 정확한 위치를 알 기 위해서는 위 속도 화살표의 방향을 알아야한다.
이 화살표의 방향을 벡터 용어로 화살표의 법선이라고 한다.
기본적으로 크기는 1이며, 위 화살표의 방향에 거리를 곱하면 해당 거리에 대한 화살표를 얻을 수 있다.
그럼 이제 우리가 사용한 속도인 PlatformVelocity의 법선을 가져오면 되는 것을 알 수 있다.
해당 법선을 가져오는 방법은 해당 벡터에 점연산자를 사용하여. GetSafeNormal이라는 멤버 함수를 통해 가져오는 것이 가능하다.
이제 해당법선을가지고 거리에 곱해주면 우리가 원하는 전체 거리에 대한 화살표를 얻을 수 있다.
이를 StartLocation에 더하여 목표 위치를 만들고, 해당 값을 새롭게 StartLocation으로 설정해주면 된다.
'Unreal > Udemy 강의' 카테고리의 다른 글
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 3-20 (0) | 2024.03.10 |
---|---|
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 3-19 (0) | 2024.03.10 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 3-17 (0) | 2024.03.09 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 3-16 (0) | 2024.03.08 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 3-15 (0) | 2024.03.08 |