클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

문 열고 닫는 상호작용 만들기 + 입력 키에 따라 본문

게임 개발 공부/언리얼 엔진

문 열고 닫는 상호작용 만들기 + 입력 키에 따라

huenuri 2024. 8. 25. 14:47
이번에는 문을 만들어 캐릭터가 문 주변으로 걸어가면 문이 열리는 기능을 만들어볼 것이다. 지난 번에는 이 부분이 잘 안되었으나 오늘 해보니 잘 실행되어 이제 정리만 하면 될 것 같다.

어떻게 해서 문이 열리고 닫히는 동작이 실행되는지 궁금했다. 아마도 레이를 발사해서 이것이 문과 충돌하면 문이 열리게끔 되는 시스템인 것 같다.

이 부분을 정리하기 전에 콜리전(충돌)에 대해서 학습을 하는 것이 도움이 될 것이다.

 

콜리전 안내서 언리얼 공식 문서

콜리전 개요 언리얼 공식 문서



 

문 여는 기능 만들기

문 컴포넌트 추가하기

먼저 블루프린트 액터 클래스를 생성하고, Static Mash 컴포넌트를 추가해준다. 여기에 문 Mesh를 넣는다.
받아놓은 문 에셋이 없어서 스타터팩이 있는 문을 추가해주었다.

 

여기에 Box Collision을 추가하고 크기를 늘려서 문에 알맞게 배치해준다.
Box Collision을 앞뒤로 배치해도 되고 하나로 만들어도 된다. 여기서는 앞뒤로 하나씩 만들어주었다.

Line Trace가 문을 발사하기 위해서 충돌과 태그를 검사한다고 한다. 처음에는 난 태그를 설정하지 않아서 문이 열리지 않기도 했었다. 그러니 태그를 꼭 지정해주어야 한다.

 

 

 

 

Collision 및 Tag 설정

콜리전을 선택한 상태로 detail 창에서 collision을 검색하여 다음의 설정을 변경한다.

  1. Collision Preset을 Custom으로 변경
  2. Interaction을 Block으로 변경
  3. Tag를 Door로 지정

 

태그는 BP_Door를 선택한 후 검색한다.

 

 

 

 

 

 

노드를 만들어주는데 timeLine을 통해 앞쪽 콜리전 영역 안에 들어가면 자동으로 문이 열리게 설정했다.
소리도 함께 재생이 된다.

 

 

 

 

 

다른 문 액터 추가

 

유튜브 동영상을 시청하며 다른 문 열기 버전의 블루프린트를 만들어보았다. 이분은 문을 하나 만든 다음 자식 클래스로 받아 이 클래스에서 수정하는 방식으로 만드셨다.

 

 

 

 

 

이렇게 문이 열리는 걸 볼 수 있다. 밖으로 나가면 2초 후에 다시 닫힌다. delay를 주어서 설정했기에 그런 것 같다.



 

 

입력 키를 누르면 문이 열리는 기능

이번에는 E 키를 입력하면 문이 열리는 기능을 만들어보았다. 문은 조금 전에 참고했던 동영상에서 자식 클래스로 받아서 만들어준 것이다.

 

직접 만들어보기

문 가까이에 가면 Open이라는 글씨가 보이게 만들어주었다. 문이 너무 작은 것 같아서 키웠더니 이번에는 너무 커보인다.

 

이 글씨가 나올 때 E 키를 누르면 문이 열린다. 근데 그냥 지나가도 문을 통과해버려 이 부분은 수정을 해주어야 할 것 같다.

 

 

 

블루프린트 Event Graph

BP_Player

 

태그를 감지해서 Door이면 문이 열리도록 설정해주었다.

 

 

 

 

BP_Door

 

부모 Door 클래스에서 커스텀 이벤트를 만들어 이것을 자식 클래스에서 가져올 수 있게 했다.

블루프린트의 자세한 설명을 나중에 깊이있게 공부를 하며 알게 될 것 같고 지금은 이 정도만 정리해보았다.



 

작업을 마치고

문을 여는 기능이 되었으니 키를 입력하면 특정 애니메이션이 실행되도록 만들어보고 싶다. 그리고 조금 전에 잘 안되었던 무기 교체하는 기능도 만들 수 있었으면 좋겠다.

이번주 안에 적 AI 만드는 기능도 익혀야 하는데 할 게 정말 많다. 아직 학원가기 전까지 30분 정도 남았으니 이중에 하나의 기능은 만들어볼 것이다.