본문 바로가기

Unreal/Udemy 강의

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

캐스팅과 액터 부착

가고일 석상이 트리거 박스 내에 고정시키기 위해서는 가고일 석상을 트리거 박스에 부착시켜서 고정시켜줄 필요가 있다.

이를 위해 액터를 부착시키는 것 이외에도 부착 이후 가고일 석상의 물리 시뮬레이트를 false로 바꿔주어야 한다.

 

먼저 부착을 위해서 다음 함수를 사용한다.

 

그리고 물리 시뮬레이트 비활성화를 위해서는 다음 함수를 사용한다.

 

 

이제 구현을 해보는데, 먼저 가고일 석상의 루트 컴포넌트를 얻어야 한다.

이를 위해 기존 트리거 cpp 내에서 선언했던 Actor를 사용할 수 있고, GetRootComponent 함수를 사용하여 루트 컴포넌트를 얻을 수 있다.

하지만 여기서 문제가 생긴다.

GetRootComponent 함수가 반환하는 컴포넌트는 UScene 컴포넌트이지만, SetSimulatePhysics 함수는

UPrimitiveComponent에 속하는 함수이다.

따라서 Cast를 이용하여 GetRootComponent를 통해 얻은 컴포넌트를 UPrimitiveComponent로 바꿔줄 필요가 있다.

바꿔주고 나서 얻은 UPrimitiveComponent를 바탕으로 해당 값이 nullptr이 아니라면 SetSimulatePhysics를 사용하여 false를 할당해준다.

 

다음으로 액터를 어태치해줄 차례이다.

부착할 대상이자 현재 작업대상인 trigger 즉, this를 넣어주고, 규칙은 KeepWorldTransform을 사용한다.

이외에도 KeepRelativeTransform 규칙이 존재하지만, 해당 규칙은 대상 오브젝트가 움직이는 경우에 가능하므로 이번에는 사용이 불가능하다.

 

이제 플레이를 해보면 무사히 비밀문이 끝까지 내려가고, 지하로 가는 입구가 열리게 된다.