본문 바로가기

Unreal/Udemy 강의

Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 3-18

멤버 함수 사용

현재 무사히 앞 뒤로 움직이는 것까지 완료한 상태이다.

하지만 속도 값을 1000으로 변경 후 다시 실행해보면 여전히 시작점을 지나치며 움직이는 현상이 발생할 수 있다.

현재 if문은 끝 지점을 지나쳐야만 하는데, 이때 지나치는 정도가 델타타임에 따라 다르게 되기 때문이다.

델타타임은 속도에 영향을 받기 때문에, 속도가 빠를수록 심해지고, 시간이 지날수록 거리에 오차가 점점 심해질 수 있다.

이를 개선하기 위해서는 원래 시작 위치에서 목표로 한 위치로 가려면 얼마나 이동해야 하는지 미리 계산을 해주는 것이다.

 

먼저 속도는 화살표로 나타낼 수 있고 방향과 크기를 갖는다.

설정한 만큼만 이동하고 멈추는 정확한 위치를 알 기 위해서는 위 속도 화살표의 방향을 알아야한다.

이 화살표의 방향을 벡터 용어로 화살표의 법선이라고 한다.

기본적으로 크기는 1이며, 위 화살표의 방향에 거리를 곱하면 해당 거리에 대한 화살표를 얻을 수 있다.

 

그럼 이제 우리가 사용한 속도인 PlatformVelocity의 법선을 가져오면 되는 것을 알 수 있다.

해당 법선을 가져오는 방법은 해당 벡터에 점연산자를 사용하여. GetSafeNormal이라는 멤버 함수를 통해 가져오는 것이 가능하다.

이제 해당법선을가지고 거리에 곱해주면 우리가 원하는 전체 거리에 대한 화살표를 얻을 수 있다.

이를 StartLocation에 더하여 목표 위치를 만들고, 해당 값을 새롭게 StartLocation으로 설정해주면 된다.