블루프린트 게임
블루프린트로 액터들을 이동시키거나 회전시키고 캐릭터가 액터의 collision box에 overlap이 되면 어떤 상호작용이 되도록하여 간단한 게임을 만들었다
레벨 디자인
오징어 게임 유리다리 건너기를 베이스로 여러 장치들을 추가하여 만들었다
발판
발판의 종류는 기본 발판, 파괴되는 발판, 회전하는 발판이 있다
-
기본 발판 : 특별한 기능을 할 필요가 없어서 static mesh actor를 사용
-
파괴되는 발판 : 캐릭터가 발판에 닿으면 부셔져야함

- 발판에 닿는 대상이 캐릭터이면 발판의 모습 안보이게 하고 충돌도 안되도록 구현
-
회전하는 발판 : 특수한 장애물로 발판 자체가 회전을 한다. 멈추려면 이전 발판에서 트리거 박스(=box collision)와 overlap해야한다. 이 발판도 '파괴되는 발판'과 마찬가지로 캐릭터와 닿으면 파괴된다


- 회전을 멈추면 처음 배치한 상태로 돌아가기 위해 BasicRotation에 처음 배치한 상태의 rotator를 저장
- 회전하기 위해서 Add Actor Local Rotation 노드 사용
- 이후 콜리전 박스와 캐릭터의 상호작용을 통해 회전 정지
- 처음에 레벨 블루프린트에 어떤 변수를 만들고 이 변수를 통해 branch노드에서 멈춤과 회전을 정하려했는데 '레벨 블루프린트에 있는 변수나 함수에는 접근할 수 없다'는 글을 보고 트리거 블루프린트를 만들어서 해당 역할을 대신함
장애물
장애물의 종류는 이동하는 타일, 회전하는 장애물이 있다
- 이동하는 타일 : 좌/우, 상/하로 반복적으로 움직이며 캐릭터의 진행(전진)을 방해
블루프린트 : 월드를 기준으로 움직임 | InterpToMovement : 오브젝트를 기준으로 움직임 |
---|
- 블루프린트에서는 타일이 원하는 거리(MoveDistance)만큼 움직이면 PlatformVelocity -> Negate Vector -> Set노드로 속력을 음수로 바꿔 진행방향이 반대가 되도록 했다
- InterpToMovement : 언리얼 엔진에서 제공되는 컴포넌트로 디테일창을 조절하는 것만으로 간단하게 이동하는 액터를 만들 수 있다
- 회전하는 장애물 : 중심축을 기준으로 회전하며 캐릭터가 닿으면 캐릭터를 날려버림

- 회전 로직은 '회전하는 발판'과 동일
- Component Hit 노드로 장애물과 캐릭터가 닿으면 캐릭터를 날려보내도록 함
- Hit Normal : 충격 지점의 mesh에 수직으로 나오는 선
유틸리티
유틸리티 종류로는 엘리베이터가 있다
- 엘리베이터 : 게임의 시작 지점이 상공에 있는데 떨어졌을 때 빠르게 올라가기 위해 만듦

- '이동하는 타일'은 이동의 끝과 끝에서 멈추지 않고 바로 반대 방향으로 이동하지만 엘리베이터는 캐릭터를 기다리기 위해 Delay노드(파란 박스)를 사용해서 잠시 멈췄다가 이동한다
게임 시연
유튜브 : https://youtu.be/MPXxmb5ubTM
참조 사이트
1. https://blog.naver.com/bysmk14/223156847789
2. https://forums.unrealengine.com/t/whats-out-hit-normal/508226