Unreal Engine 5 자동문 만들기

조정원·2025년 5월 2일

TIL(Today I Learned)
Unreal로 자동문 만들기 과제 수행에서 어려움을 겪은 내용을 적어보겠다.

블루프린트 클래스를 만들고 Box Collision 컴포넌트를 추가하여 trigger box처럼 사용하였다. 그래서 문 주위에 위치했을 때 문이 열리고 닫히는 이벤트를 발생하도록 하였다.

처음에는 상호작용할 액터인 문을 레벨에 이미 존재한 에셋으로 사용하려 했으나 움직이는 동작을 할 수 없었고, 새로 BP_Door라는 블루프린트 클래스를 만들어주었다.

어떻게 구현할까 고민하다가 맨 처음 생각으로 BP_Door에 직접 Box Collision을 추가하는 방법이였는데 계속 처음 동작하고 문이 사라지는 것 같았고, 이는 문이랑 trigger랑 같이 움직여버리는 것 때문에 발생한 것이였고, trigger는 레벨에 가만히 위치해 있어야 한다는 것을 깨달았다.

그리고 나서 새로 triggerbox용 액터를 생성해주었다. 계속해서 어려움들이 있었는데 어떤 액터의 블루프린트 내에서 다른 액터의 블루프린트를 참조하는 방법에 대한 것이다.

계속해서 어떻게 할까 이것 저것 시도해도 잘 되지 않았고, 구글링과 chatgpt를 검색해본 결과
Door라는 액터 변수를 추가한 후,

레벨의 디테일 패널의 Door 변수 토글에서 BP_Door라는 클래스를 추가하여 해당 액터에 접근할 수 있었다.

이제 잘 될 것만 같았지만, EventActor Begin OverLap에 set actor location으로 actor의 y값을 변경해주는 방법을 사용했는데 문이 스르륵 열리는게 아닌 순간이동을 하기 때문에 보간을 해주어야 하였다.

보간은 Lerp(Vector)를 사용하면 되지만 이것도 어떻게 할 지 좀 어려웠고, 검색해서 알아본 결과로 TimeLine을 사용하면 되었다.

TimeLine을 구성해서 만든 것도 잘 되었지만 한 번 자동문처럼 열리고 닫힌 이후로 잘 되지 않았는데 이는 TimeLine이 한 번 실행한 후 내부의 값이 초기화 되지 않았기 때문이다.

이를 바꾸어 주려면 play from start로 링크를 연결해주어야 했으며, 보간을 해주기 위해서 lerp는 Event Tick으로 만드는게 아닌가 생각했기에 매 Tick마다 Play from start가 작동하여 튀는 현상이 발생했다.
최종적으로 EventActor Begin OverLap에 각각 Open과 Close를 만들어 완성했다.

profile
게임 AI 개발자 조정원입니다.

0개의 댓글