본문 바로가기
Unreal Engine

Ureal Engine 플레이어에 반응해서 열리는 문 제작하기

by hfgraphic 2025. 10. 3.
반응형

 

새로운 블루프린트를 만들어야 합니다. 

블루프린트 안에서 Static Mesh를 만들고, Box Collision을 만들어 줍니다.

플레이어가 Box 안에 있을 때 또는 Box 밖으로 벗어날 때 발생하는 Event를 설정합니다.

 

On Component Begin Overlap과 On Component End Overlap은 언리얼 엔진 블루프린트에서 충돌 이벤트를 다룰 때 사용되는 중요한 노드입니다. 이 두 노드는 특정 컴포넌트(이 경우 Box Collision)가 다른 컴포넌트와 겹치기 시작하거나 겹침이 끝났을 때 실행되는 이벤트를 생성합니다.

 

On Component Begin Overlap

이 이벤트는 다른 액터나 컴포넌트가 Box Collision 컴포넌트와 처음 겹치기 시작할 때 한 번 발생합니다. 예를 들어, 캐릭터가 특정 구역(Box Collision)에 진입했을 때 문을 열거나, 아이템을 획득하는 등의 기능을 구현할 때 사용됩니다.

 

On Component End Overlap

이 이벤트는 다른 액터나 컴포넌트가 Box Collision 컴포넌트와 겹치는 상태를 벗어났을 때 한 번 발생합니다. 예를 들어, 캐릭터가 특정 구역을 떠났을 때 문을 닫거나, 효과음 재생을 멈추는 등의 로직을 처리할 때 유용합니다.

 

Box Collision에 Event에 On Component Being Overlap을 추가해 주고 다른 필요없는 사전에 있었던 노드들은 삭제해 줍니다.

Cast to 노드로 플레이어 블루프린트를 연결해 주고 Time line 노드를 만들어서 변수 중 문이 동작하는 주체를 드래그로 가져오고 Get으로 설정합니다. 가져온 노드를 출력 부분을 드래그해서 회전하는 움직임을 만들기 위해 Set Relative Rotation 노드를 가지고 와서 연결해 줍니다.

 

Cast to 노드는 언리얼 엔진 블루프린트에서 특정 객체(Object)의 클래스를 확인하고, 해당 클래스의 특정 변수나 함수에 접근할 때 사용되는 중요한 노드입니다.

 

Cast to 노드의 역할

언리얼 엔진의 대부분의 액터(Actor)나 컴포넌트는 상위 클래스(부모 클래스)에서 상속받은 속성을 공유합니다. 예를 들어, On Component Begin Overlap 이벤트에서 Other Actor 핀은 어떤 액터든 될 수 있기 때문에 일반적인 Actor 타입으로만 제공됩니다.

하지만, 게임 로직을 구현할 때는 이 액터가 ThirdPersonCharacter 클래스인지, 혹은 Item 클래스인지 확인하고 싶을 때가 많습니다. 이때 Cast to 노드를 사용하여 해당 액터가 특정 클래스에 속하는지 **형변환(Casting)**을 시도합니다.

 

Cast to 노드 사용법 및 구조

Cast to 노드는 다음 두 가지 출력 핀을 가집니다.

* Cast Failed: 형변환 시도가 실패했을 때(즉, 입력된 객체가 지정된 클래스가 아닐 때) 실행되는 핀입니다.

* As [클래스 이름]: 형변환이 성공했을 때 실행되는 핀입니다. 이 핀을 통해 해당 클래스에 고유한 변수나 함수에 접근할 수 있습니다. 예를 들어, Cast to ThirdPersonCharacter 노드를 사용했다면, As ThirdPersonCharacter 핀에서 ThirdPersonCharacter 클래스에만 존재하는 체력 변수나 점프 함수 등을 호출할 수 있습니다.

time line 노드를 두번 클릭해서 시간에 따른 값의 변화를 그래프로 만들어 준다.

 

타임라인 노드는 언리얼 엔진 블루프린트에서 시간의 흐름에 따라 변수나 값, 액터의 속성을 제어하는 데 사용됩니다. 복잡한 코딩 없이 애니메이션, 페이드 효과, 오브젝트의 이동 등을 쉽게 구현할 수 있습니다.

 

타임라인 노드 사용법

타임라인 노드는 크게 세 부분으로 구성됩니다.

* 타임라인 그래프: 노드를 더블 클릭하면 열리는 창으로, 여기서 변할 값을 그래프로 직접 만듭니다.

* 이벤트: 타임라인이 시작되거나 끝나면 실행되는 이벤트입니다.

* 업데이트: 타임라인이 진행되는 동안 매 프레임마다 실행되는 이벤트입니다.

주요 기능

* 플로트, 벡터, 컬러 트랙: 시간에 따라 변하는 값을 설정할 수 있습니다. 예를 들어, 빛의 밝기를 시간에 따라 조절하거나, 오브젝트의 위치를 부드럽게 이동시킬 수 있습니다.

* 이벤트 트랙: 특정 시간에 한 번만 실행되는 이벤트를 추가할 수 있습니다.

* 플레이/리버스: 타임라인을 앞으로 재생하거나 뒤로 재생할 수 있습니다.

* 루프: 타임라인이 끝나면 자동으로 다시 시작하도록 설정할 수 있습니다.

예시

완료되면 Compile을 해준다.

Game Play로 잘 작동하는지 확인해본다. 지금까지 글을 정리해보겠습니다.

 

블루프린트 및 컴포넌트 생성
 * 새로운 블루프린트를 생성합니다.
 * 블루프린트 안에 Static Mesh와 Box Collision 컴포넌트를 추가합니다. 이 컴포넌트들은 각각 문과 문의 충돌 감지 영역 역할을 합니다.
충돌 이벤트 설정
 * Box Collision 컴포넌트의 Details 패널에서 Events 메뉴에 있는 **On Component Begin Overlap**을 클릭해 이벤트 노드를 생성합니다.
 * 이 노드는 다른 액터가 Box Collision에 닿기 시작할 때 실행되는 로직을 만듭니다. 반대로 **On Component End Overlap**을 사용하면 겹치는 상태를 벗어났을 때의 로직을 만들 수 있습니다.
플레이어 확인 및 로직 연결
 * On Component Begin Overlap 노드의 Other Actor 핀을 Cast to 노드에 연결합니다.
 * 이 Cast to 노드는 ThirdPersonCharacter (또는 플레이어가 사용하는 캐릭터 블루프린트)로 설정하여 겹친 액터가 플레이어인지 확인합니다.
 * 형변환이 성공하면 (As ThirdPersonCharacter 핀이 실행되면), 타임라인이 실행되도록 연결합니다.
타임라인을 이용한 애니메이션
 * Timeline 노드를 생성하고, Cast to 노드의 As ThirdPersonCharacter 핀과 연결합니다.
 * Timeline 노드를 더블 클릭하여 그래프를 엽니다.
 * **Float Track**을 추가하고, 시간에 따른 문의 회전 각도(예: 0초에 0도, 2초에 90도)를 정의하는 키프레임을 만듭니다.
 * 이벤트 그래프로 돌아와 Timeline 노드의 Update 핀을 Set Relative Rotation 노드에 연결합니다.
 * Set Relative Rotation 노드의 New Rotation 핀에는 Timeline 노드의 Float Track 출력 값을 연결하여 문이 부드럽게 회전하도록 설정합니다.
 * 마지막으로, Compile 버튼을 눌러 블루프린트를 저장하고, Play 버튼으로 게임을 실행하여 문이 제대로 작동하는지 확인합니다.

반응형