저번 게시글에서 컴포넌트 함수를 이용하여 이동 컴포넌트를 만들었습니다.
이번에는 인터페이스를 이용하여 이동 컴포넌트를 만들고 엘리베이터에 적용해 보겠습니다.
빈 공간 마우스 우클릭 → 블루프린트 → 블루프린트 인터페이스를 생성합니다.
이름은 실행으로 변경했습니다.
실행 블루프린트 인터페이스 안에 함수를 2개 추가합니다.
Trigger와 Reset으로 이름 변경했습니다.
각각 입력에서 + 버튼을 눌러 액터 레퍼런스로 TargetActor라고 이름 변경했습니다.
새로운 블루프린트 클래스 → 모든 클래스 → SplineMeshComponent를 생성합니다.
이름은 실행_경로이동으로 만들었습니다.
실행_경로이동의 클래스 세팅으로 들어갑니다.
디테일 패널의 구현된 인터페이스에서 추가를 눌러 실행을 클릭합니다.
왼쪽에 인터페이스로 Trigeer와 Reset이 자동으로 추가됩니다.
Trigger와 Reset에서 마우스 우클릭하여 이벤트 실행을 클릭합니다.
자동으로 Event라는 노드가 추가됩니다.
새로운 액터 컴포넌트를 만듭니다.
이름은 작동으로 변경했습니다.
함수를 2개 추가하여 이름은 작동, 해제로 변경했습니다.
변수도 추가하여 이름은 실행대상으로 변경했습니다.
변수는 눈을 뜨게 해 줍니다.
실행대상 변수에 Get Components by Interface 노드를 연결합니다.
이 노드는 배열을 반환하기 때문에 For Each Loop 노드가 필요합니다.
Trigger에 Target을 연결해 줍니다.
해제는 작동과 똑같이 만들어주되 마지막 이벤트는 Trigger가 아니라 Reset으로 연결합니다.
실행_경로이동 컴포넌트로 와서 + 버튼을 눌러 변수 2개를 추가합니다.
플로트 타입으로 MovementPercent와 MovementSpeed를 만들었습니다.
MovementSpeed의 기본값은 0으로 둡니다.
Event Trigger와 Event Reset 노드에 Movement Speed를 Set로 연결하고 Trigger는 1, Reset은 0으로 값을 변경합니다.
Trigger 이벤트가 발생하면 작동의 실행대상이 움직이고, Trigger 이벤트가 끝나면 Reset 이벤트가 발생되어 MovementSpeed가 -1이 되어 원래 위치로 돌아오는 것입니다.
Event Tick으로 와서 Delta Seconds에 Movement Speed를 곱한 값이 이동값이 됩니다.
Movement Percent는 0이며 현재 위치입니다.
이동값과 더하면 액터의 이동 상태를 알 수 있는데 Clamp (Float) 노드를 통해 0에서 1로 범위를 제한했습니다.
빈 공간에서 우클릭하여 Get Start Position과 Get End Position 노드를 가져옵니다.
스플라인 메시 컴포넌트 타겟으로 가져와야 합니다.
Lerp (Vector) 노드를 추가하고 각각 A와 B에 연결합니다.
Alpha 값은 Clamp의 값과 연결했습니다.
이제 Set Actor Location 노드를 추가하고 Target은 Get Owner, New Location은 Lerp 값과 연결합니다.
작동 컴포넌트에 대한 자손 블루프린트 클래스를 생성합니다.
Get Owner 노드를 통해 Bind Event to On Actor Begin Overlap 노드와 End Overlap 노드를 가져옵니다.
이를 자손 Begin Play 노드와 연결합니다.
Custom Event 노드를 추가하고 Begin Overlap에는 작동 함수를 연결했습니다.
End Overlap에는 해제 함수를 연결하면 끝납니다.
컴파일, 저장을 하고 나옵니다.
간단한 엘리베이터를 만들었습니다.
버튼을 누르면 엘리베이터가 움직이도록 하려고 버튼에 작동_Overlap 컴포넌트를 넣었습니다.
움직일 대상은 Elevator입니다.
오른쪽 스포이드 버튼으로 Elevator를 클릭하면 손쉽게 대상을 찾을 수 있습니다.
작동_Overlap 컴포넌트는 오버랩 이벤트를 이용하여 만들었기에 오버랩 이벤트 생성에 체크, 콜리전 프리셋을 OverlapAll로 변경합니다.
엘리베이터에는 실행_경로이동을 넣었습니다.
어디로 움직일지 시작 위치와 끝점 위치를 수정합니다.
시작 위치는 액터의 트랜스폼 위치를 복사해서 넣고 끝점 위치는 위로 움직일 것이기에 Z값만 500으로 수정했습니다.
사실 이 Elevator는 큐브를 줄여서 네모 모양으로 배치만 해뒀기에 실행된다면 바닥면만 움직일 것입니다.
엘리베이터가 될 큐브에서 우클릭하여 어태치를 통해 Elevator에 모두 넣어줍니다.
이렇게 하면 이동할 때 어태치로 자손이 된 액터도 함께 움직이게 됩니다.
또한 게임에서 이동이 가능하도록 모두 무버블 상태로 만들어줍니다.
플레이 영상입니다.
빨간 버튼에 닿으면 엘리베이터가 올라가고 버튼에서 떨어지면 엘리베이터가 내려가는 것을 볼 수 있습니다.
사용한 언리얼 버전: 5.4.1
'언리얼 블루프린트 > 컴포넌트' 카테고리의 다른 글
[언리얼5 블루프린트] 발사하는 컴포넌트 만들기 (0) | 2024.08.12 |
---|---|
[언리얼5 블루프린트] 밟으면 이동하는 컴포넌트 만들기 (0) | 2024.08.10 |
[언리얼5 블루프린트] 캐릭터의 체력 컴포넌트 만들기 (0) | 2024.08.09 |
[언리얼5 블루프린트] 액터 Hit 컴포넌트 만들기 (0) | 2024.08.08 |
[언리얼5 블루프린트] 캐릭터의 공격 컴포넌트 만들기 (0) | 2024.07.09 |