[언리얼엔진5 입문] 32. if문, 멤버 함수 GetSafeNormal

ASP·2024년 4월 3일
0

언리얼엔진5 입문

목록 보기
32/41

불루프린트에서 사용했던 Branch 노드와 비슷한 기능을 하는 if 문

if 문을 사용하여 플랫폼의 이동 거리가 설정한 이동 거리보다 커질 경우 반대 방향으로 이동하게 하려고 함.

먼저 헤더파일에 플랫폼의 이동거리를 100으로 설정.

cpp 파일에서 if 문의 조건문으로 이동한 거리인 DistanceMoved 가 설정한 이동거리인 MoveDistance보다 커질 경우 반대방향으로 이동하게 하려고 함.

이를 위해 -PlatformVelocity 사용. 현재 속도의 음수.

그리고 반대방향으로 이동할때 100만큼의 거리를 이동하면 다시 돌아가게 하기 위해 시작 위치를 그때의 위치로 설정.


현재 코드는 이동한 거리가 설정한 거리보다 커질 경우 반대 방향으로 이동함.

즉, 실제 설정한 거리보다 더 이동할 경우 반대방향으로 이동하기 때문에 실제 설정한 이동거리보다 더 이동하게 됨.

이로 인해 시간이 지날수록 반대 방향으로 이동하게 되는 startLocation이 달라짐.

따라서 startLocation을 처음 움직이기 시작한 시작 위치에서 정확히 이동하고 싶은 방향과 거리를 더한 위치를 목표 위치로 설정하고, 이 목표 위치를 시작 위치로 갱신해야 함.

먼저 벡터의 방향을 알려주는 멤버함수 GetSafeNormal 사용.

벡터 클래스의 멤버변수인 GetSafeNormal 함수는 해당 벡터의 정규화된 벡터를 리턴함. 즉, 벡터의 방향으로 크기가 1인 단위 벡터를 리턴함.

그리고 if 문을 위와 같이 수정.

먼저 이동방향 벡터를 GetSafeNormal 함수를 가져옴.

그리고 StartLocation을 현재, 즉 반대방향으로 이동하기 시작한 위치를 가져와서 시작 위치로 갱신하고 해당 위치로 액터를 이동시킴.

그리고 갱신된 시작 위치로부터 반대 방향으로 이동함. 이 과정의 반복.

profile
언리얼엔진 개발자의 길

0개의 댓글