2026. 3. 1. 01:33ㆍUnreal
게임 설계

게임은 이런식으로 시작지점에서 건너가 좌, 우의 선택지에서 취향에 맞는 루트를 이용해 골인 지점에 가는 플랫포머 게임이다.
중간 지점까지는 아무 기능이 없는 일반 발판을 이용해서 제작할 예정이다.

시작 지점은 간단히 완성했다.
여기서 좌, 우 방향에 어떤 게임이 있는지도 친절하게 설명하고 싶어 UMG Text를 만들려고 한다.
폴더 > 우클릭 > User Interface > Widget BluePrint을 생성한다.
내부에 들어오면 상단에 Designer버튼을 누른 후 좌측 palette 부분에서 Text를 끌어서 온다.
그 후 우측 디테일 창에서
Content > Text : 입력하고 싶은 글자
Appearance > Font > Size : 글씨의 크기
Appearance > Font > Color and Opacity : 글씨의 색
Appearance > Font > Justfication : 글씨의 정렬
을 설정한 후

레벨 블루프린트를 열어 다음과 같이 설정하면 화면에 정상적으로 출력됨을 확인할 수 있다.


게임에 꼭 필요한 부분은 아니지만 다른 사람이 플레이한다고 생각했을 때 편의성에 대한 부분이라 추가하고 싶었다.
이제 무빙 플랫폼을 배치해 본격적인 게임을 만들어보려고 한다.
무빙 플랫폼 등 다양한 발판 및 오브젝트는 저번 시간에 만들었던 발판을 활용하려고 한다.

하지만 발판이 너무 짧고 빨리 돌아가면 올라타기가 매우 힘들어 시작조차 안될 것이다.
그래서 무빙 플랫폼에 지점마다 출발 지연시간을 추가할 예정이다.
이동 > 최대지점 도착 > 이동 순서인 플랫폼에
이동 > 최대지점 도착 > 3초 대기 > 이동을 하기 위해
bIsWaiting 변수를 Bool 타입으로 선언해주겠다.

그 후 기존 이동코드에 Branch와 bIsWaiting을 추가해, 먼저 기다리는 동안 이동을 막도록 로직을 추가한다. 추가로 branch는 False로 바꿔준다. 멈추지 않았을 때 움직여야하기 때문이다.
추가로 속도가 0인 Vector 변수를 하나 만들어 멈췄을 때의 상태를 구현해야 한다.
Saved Velocity를 벡터 변수로 생성해 만들고

이런식으로 연결한다.
만약 최대 거리에 도달했다면, 멈추기 전에 PlatformVelocity를 SavedVelocity에 저장하고 Is Waiting을 True로 바꿔 이동을 멈춘다. 그 후 3초의 딜레이를 가진 후 SavedVelocity를 반전해서 다시 그 값을 Platform Velocity에 넣는 방식으로 진행된다.
실행해보면

정상적으로 멈춘 후 다시 작동한다.
같은 방식으로 좌측에도 좌측 상단으로 올라가는 엘리베이터를 설치했다.

얼음 빙판을 두고, 여기에 캐릭터가 부딪히면 캐릭터를 날리는 오브젝트를 설치해 장애물을 피하는 것으로 만들어 보려고 한다.

오브젝트와 캡슐 콜리전을 추가해 액터를 생성해주고 블루프린트 노드를 작성한다.

전체 동작 흐름
- 캐릭터인지 확인
- 방향 벡터 계산
- 정규화
- 힘 곱하기
- Launch Character 실행
핵심 기능 노드는
On Component Begin Overlap + Cast to BP_Character
기둥에 닿은 대상이 플레이어 캐릭터인지 확인
Cast에 성공했을 때만 튕김 로직이 발생하도록한다.
GetActorLocation(캐릭터) - GetActorLocation(기둥)
Z값은 0으로 처리해서 위로는 날아가지 않도록 함
기둥에서 캐릭터 방향으로 벡터를 생성해준다.
Direction * KnockbackPower -> Launch Character
방향 벡터에 힘 크기를 곱한다.
Launch Character로 실제 물리적 튕김을 적용한다.
Xy Override를 체크하고 Z를 해제해서 Z축 방향으로는 절대 튀지 않도록 한다.

이렇게 해서 캐릭터가 기둥 반대 방향으로 밀려나게 된다.
플랫폼 게임
이제 플랫폼 게임 부분을 만들어 볼 것이다.
이 부분은 어제 만들었던 발판들을 활용해서 적절한 배치로 난이도를 조절할 것이다.
첫번째는 움직이는 발판들을 활용해서 넘어가는 구간이다.
속도와 방향을 조금씩 조절해서 겹치는 구간에 넘어가도록 설계했다.

두 번째는 얼음 발판을 건너가는 구간이다.
미끄러지는 효과때문에 생각보다 난이도가 있는 구간이다.

마지막 세번째 구간은 사라지는 발판 구간이다.
빠른 시간안에 넘어가야 하는 구간이다.
또한 추가로 회전하는 발판과 함께 배치하여 회전하는 발판과 맞게 타이밍을 잘 계산해서 건너가야 한다.


여기까지 하면 하얀색 얼음카펫과 함께 게임 클리어다!
오늘 게임을 만들어 봤는데, 생각보다 많은 오류와 배치에서 어려움을 느꼈다.
게임을 만드는 일이 쉽지만은 않다는 것을 느꼈고, 앞으로 배울 C++로 게임을 만들면 얼마나 더 큰 일이 생길지 감도 안잡힌다.
더 다양한 기능으로 게임을 만들어 보고 싶었지만 아직 능력이 부족해 계획대로 못 한 부분이 조금 아쉬웠다.
더 오래 수업을 듣고 많은 기능과 기술을 구현해보고 싶다.
'Unreal' 카테고리의 다른 글
| < 언리얼 C++ > 캐릭터와 입력 시스템 (0) | 2026.04.14 |
|---|---|
| 언리얼 DAY9 언리얼 블루프린트 정리 (0) | 2026.03.03 |
| 내일배움캠프 DAY5 블렌더 스페이스와 움직이는 액터 (0) | 2026.02.27 |
| 내일배움캠프 DAY4 플레이어 캐릭터 (1) | 2026.02.27 |
| 내일배움캠프 DAY3 블루프린트를 이용한 비주얼 스크립팅 (0) | 2026.02.26 |