로컬 회전
회전에 대해서 다루기에 앞서, AddActorLocalOffset 함수에서 두 번째 인풋 매개 변수인 스윕에 대해서 자세히 알아보고 시작한다.
스윕 기능은 루트 컴포넌트에 대해서만 스윕하며 블록 콜리전을 체크해준다.
루트 컴포넌트에 대해서만 체크하기에 연결되어있는 하위 컴포넌트에 대해서는 체크하지 않는다.
따라서 부딪히는(겹치는) 물체를 체크가 가능하며, 이를 감지하여 특정한 프레임으로 부딪힌 물체를 되돌려 보내 오브젝트를 관통하지 않게 해준다.
움직임이 실제로 구현되기 전에 겹침을 잡아내기 때문에 실제로는 부딪히지 않게 된다.
블록 콜리전 체크를 하기 때문에 콜리전 기능에 대한 활성화가 필요하다.
먼저 코드에서 스윕에 대해 true 값을 넘겨주자.
이후 루트컴포넌트인 캡슐 컴포넌트의 콜리전을 확인해주자.
기존에 OverlapAllDynamic이었지만 BlockAllDynamic으로 바꿔주었다.
기존엔 오버랩이었기 때문에 탱크를 움직여도 벽을 통과했지만, 이제는 벽을 통과하지 못하고 앞에서 멈추게 된다.
위와 같이 콜리전을 바꾸고 탱크가 움직이지 않게되는 경우도 발생할 수 있는데,
이는 캡슐 컴포넌트가 지면에 닿아서 생기는 일이다.
따라서 탱크의 바퀴 위치를 캡슐 컴포넌트보다 아래로 위치하면 이를 방지할 수 있다.
하위 컴포넌트인 스태틱 메시 컴포넌트에도 콜리전에 대한 내용이 있지만, 해당 스윕 기능은 앞서 말했듯이 루트 컴포넌트에 대해서만 반응하기 때문에 스태틱 메시 컴포넌트의 설정과는 무관하게 돌아간다.
이제 회전을 다뤄보자.
이동과 거의 유사한 방법으로 프로젝트 세팅 중 축 매핑 Turn에 대한 함수를 작성해주어야 한다.
그리고 마찬가지로 PlayerInputComponent를 이용한 바인드 작업도 해주어야 한다.
이제 회전에 대한 함수를 가져오는데 해당 함수는 AddActorLocalRotation 이다.
FVector를 첫 번째 매개변수로 같던 AddActorLocalOffset과 다르게 해당 함수는 FRotator를 첫 번째 매개변수로 갖는다.
나머지는 동일하다.
FRotator를 우클릭하여 타입 정의를 누르면 해당 내용에 대해 더 구체적으로 알 수 있다.
여기서 우리가 원하는 X, Y, Z가 Roll, Pitch, Yaw로 되어있는 것을 볼 수 있다.
이제 마찬가지로 회전 속도로 사용할 변수를 선언해주고, 이를 이용해 회전값을 설정해준다.
초기화로는 FRotator에 속한 ZeroRotator 기능을 이용하여 0으로 초기화해주었다.
속도를 EdiyAnywhere로 선언했기 때문에 마찬가지로 언리얼에서도 회전 속도를 자유롭게 바꿀 수 있다.
'Unreal > Udemy 강의' 카테고리의 다른 글
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-17 (0) | 2024.04.04 |
---|---|
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-16 (0) | 2024.04.04 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-14 (0) | 2024.04.04 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-13 (0) | 2024.04.04 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-12 (0) | 2024.04.03 |