프로그래머/Unreal

Unreal_플레이어를 이용한 버튼 업/다운(블루프린트)

FourthWay 2023. 3. 24. 01:39
728x90
반응형

우선 블루프린트 클래스를 Actor로 생성해 준다.

옆의 이미지와 같이 scene을 생성해서 Root으로 바꿔주고 staticmesh를 2개 생성해 주고

버튼의 하단 Mesh를 BaseMesh,

버튼의 상단 Mesh를 ButtonMesh,

로 이름을 지정해 준다.

버튼의 모양을 갖춰준다. 그리고 Box Collier를 만든다. 버튼이 누를 때 반응하는 역할을 하기 때문에 이름을

Trigger라고 지어줬다. 그리고 컴파일과 저장을 해준다.

설정을 마친 블루프린트를 뷰포트상에 배치를 해준다.

 

추가/임포트 -> 피처 또는 콘텐츠 팩 추가로 가서 삼인칭을 프로젝트에 추가해 준다.

삼인칭을 추가하면 ThirdPersonBP라는 폴더가 생기는데 ThirdPersonBP의 하위폴더의 블루프린트에서

ThirdPersonBPCharacter 블루프린트를 바로 뷰포트로 드로그앤드롭해 준다.

 

뷰포트 한 삼인칭캐릭터를 선택하고 폰을 찾아서 Auto Possess Player를 Player 0으로 설정하면 wsad키를 통해 바로

캐릭터를 조작 할 수 있다.

그리고 편집 - 프로젝트 세팅으로 가서 입력으로 가면 키보드를 조작할 수 있게 세팅되어 있는 것을 확인 할 수 있다.

이 세팅은 삼인칭 안의 기본 세팅이다.

 

그리고 우리는 플레이어가 버튼을 밟아야 하므로 버튼이 플레이어라는 것을 인식할 수 있도록 플레이어에 태그를 걸어주어야 한다. 블루프린트에 있는 ThirdPersonCharacter에 들어가서 디테일에 tag를 검색하면 액터의 Tags가 나온다.

+를 누르고 태그의 이름으로 TPC로 하여 태그를 지정해 주자.

 

이번에는 창으로 가서 월드세팅을 체크해 준다. 그러면 아웃라이너 밑에 월드세팅이 활성화되는데 월드세팅으로 가서 게임모드 오버라이드를 ThirdPersonGameMode로 설정을 해준다. 그러면 ThirdPersonBP가 월드 아웃라이더 안에 있지 않아도 플레이를 해보면 PlayerStart위치에 ThirdPersonBP가 있는 것을 알 수 있다. 그리고 플레이를 해보면 움직이는 키보드의 입력에 따라 움직이는 것을 알 수 있다. 하지만, 아직 버튼에 설정을 해주지 않았기 때문에 플레이어가 올라가도 버튼은 아무 동작을 하지 않는다.

 

그렇다면 지금부터 버튼을 누를 수 있도록 해보자.

 

 

 

 

 

 

스위치 블루프린트의 컴포넌트로 가서 Trigger에서 

OnComponentBeginOverlap (비긴오버랩)과

OnComponentEndOverlap(엔드오버랩)을 추가해 주자.

 

 

 

 

 

 

 

그럼 우선 내려가는 OnComponentBeginOverlap 비긴오버랩 버튼이다.

 

버튼을 누를 때 내려가는 블루프린트이다.

BeginOverlap의 Other Acter에서 시작된다. Actor Has Tag 로 TPC(플레이어)를 태그설정해주고

Branch를 통해 TPC(플레이어)인것을 확인 후 타임라인의 시간 동안 일정한 값을 적용한다. 그러면 위에서 아래로 버튼이 눌러지는 것이기 때문에 Z 축이 변화한다.

Lerp(Vector)를 통해 A의 Z지점, 버튼의 초기위치B의 Z지점, 버튼이 끝까지 눌러진 지점의 적절한 좌표를 입력한다. 그러면 SetRelativeLocation에서 ButtonMesh가 타깃이 되고 Lerp(Vector)에 적용된 값이 ButtonMesh로 적용이 되면서 버튼을 눌렀을 때 내려가게 된다.

 

아래는 위 블루프린트에 대한 자세한 설정들이다.

우선 타임라인의 설정이다.

총 2.2초 중 첫 번째 시작점은 시간 0.0 동안 0.0의 값이고, 두 번째 점은 2.0초 중 1.0의 값으로 설정한다.

타임라인은 float으로 하고 타임라인의 이름을 Height로 해줬다. 위 블루프린트에서 타임라인을 보면 Lerp(Vector)에 연결된 것이 Height라는 것을 볼 수 있다. 타임라인의 설정을 해줘야 Height가 활성화된다.

 

 

그리고 스위치의 Trigger의 콜리전의 콜리전프리셋 설정을 OVerlapAllDynamic으로 설정해 준다.

OVerlapAllDynamic으로 설정을 해주지 않으면 오른쪽의 사진과 같이 뷰포트에서 보이지 않는 Trigger Box 위를 밟게 된다.

 

2초 동안 1의 값이 진행되는데 캐릭터가 버튼을 밟았을 시 눌러지는 위치의 세로축이 Z 축이므로 A의 Z 축은 캐릭터가 처음 버튼을 밟은 위치가 되고, B의 Z 축은 버튼이 눌러진 위치를 나타낸다.

자연스럽게 밟을 수 있도록 적절하게 조절해 주면 된다.

사실 위에 블루프린터를 설명하면서 Lerp(Vector)를 언급하며 한번 했던 설명이다.

 

실행을 해본다면 캐릭터가 버튼을 자연스럽게 밟은 것을 확인할 수 있다.

 

그러면 이제 캐릭터가 버튼에서 내려왔을 때 버튼이 올라오게 하는 블루프린트를 해주자.

아까처럼 BP_Switch의 블루프린트에서 설정을 할 수 있고,

이번에는 End Overlap의 Other Actor에서 Actor Has Tag에서 플레이어(TPC)의 태그를 받아서 Branch에서 태그 확인 후

역순으로 재생하는 명령어인 Reverse로 노드를 연결해 준다. 그러면 플레이어(TPC)가 버튼에서 내려오면 버튼도 다시 위로 올라오는 것을 확인할 수 있다.

 

 

 

728x90
반응형