티스토리 뷰

언리얼 강의 1- 11. 블루프린트 연산 (2) 

구분  학습 내용 주요 개념 노드 핵심 포인트
학습 목표 블루프린트를 사용해서 기초 연산을 할 수 있다. Blueprint, Variable, Event 시각적 프로그래밍으로 논리와 연산 구현

 

1-1. Branch (if-else)

Branch 노드는 조건(Boolean)에 따라 실행 흐름을 True 핀, False 핀으로 나누는 역할 복잡한 조건은 미리 비교 연산 노드를 연결해서 Branch로 입력

 

1-2. Sequence

그럴 때, Sequence를 사용해주면 순차적으로 실행 순서를 정리. 핀 추가를 통해 Then 개수를 늘릴 수 있으며, Then 순서에 맞추어 노드를 배열함으로써 실행 흐름을 편리하게 제어

 

1-3. Flip Flop

실행 흐름을 번갈아가며 두 개의 출력 핀으로 구분하여 실행하는 노드. 하나의 실행 핀으로 입력을 받고, 두 개의 실행 핀이 번갈아 실행. 반복적으로 번갈아 실행되는 동작을 간단히 구현할 수 있는 장점이 있으며, 상태 전환을 쉽게 관리할 수 있다.

 

1. 흐름 제어 (Flow Control)

구분 학습 내용 주요 개념 / 노드 핵심 포인트
1-1. Branch 조건에 따라 True / False 분기 Branch, Boolean if-else 구조 구현
1-2. Sequence 실행 순서를 순차적으로 제어 Sequence, Then Pins 복잡한 흐름을 단계적으로 정리
1-3. Flip Flop 실행을 번갈아 전환 Flip Flop 상태 전환 및 반복 토글 구현에 유용

 

2-1. Bullet(총알) 발사 로직

마우스 좌클릭으로 총알을 발사하는 기능 : 우선, 기본적으로 총알은 30발이 주어진다고 하였을 때, Bullet이라는 변수를 만들고 기본 값을 30으로 설정
마우스 좌클릭 이벤트 노드를 생성
마우스 좌클릭을 할 때마다 총알이 1발씩 발사될 수 있도록, Bullet의 값에서 -1을 빼도록 노드를 연결
총알이 발사된 것을 알 수 있도록 Print Text 노드로 남은 총알의 수를 화면에 표시. 이때, 단순히 Integer를 Text로 변환하는 것이 아니라 Format Text를 사용하면 원하는 변수를 Text에 집어넣을 수 있다.
블루프린트를 실행하여 마우스 좌클릭을 할 때마다 총알이 발사되는지 확인

 

2-2. Reload(재장전) 로직

이제 키보드 R 키를 눌러 총알을 재장전하는 기능을 구현. 키보드 R 입력 이벤트 노드를 생성
키보드 R을 눌렀을 때 Bullet의 값이 30으로 바뀔 수 있도록 노드를 연결
총알이 재장전된 것을 알 수 있도록 Format Text노드로 남은 총알의 수를 화면에 표시
전체 노드 연결을 다음과 같이 진행하고 게임을 실행
아래와 같이 마우스 좌클릭을 하면 총알이 1발씩 발사되고, 키보드 R을 입력하면 총알이 30발로 재장전

 

2. 실습: 텍스트 슈팅 게임

구분 학습 내용 주요 개념 / 노드 핵심 핵심 포인트
목표 마우스 클릭 시 총알 발사, R키로 재장전 - Bullet 수 제어 로직 구현
2-1. Bullet 발사 총알 변수(Bullet=30) 생성, 클릭 시 -1 감소 Mouse Left Click, Int - Int, Format Text, Print Text 남은 총알 표시, 이벤트 처리
2-2. Reload 재장전 R키 입력 시 Bullet=30으로 복구 Keyboard R, Set Variable, Print Text 발사와 재장전 로직 연결

 

3-1. While Loop

While Loop는 특정 조건을 만족하면 계속 반복하는 노드. 레벨 블루프린트 화면에서 우클릭하여 While Loop를 검색
위와 같이 Count가 0보다 큰지를 판별하는 조건이 있다고 가정. 이 경우, Count가 0보다 크면 Loop Body에 연결된 노드가 실행되고, 작으면 Completed에 연결된 노드가 실행.

 

While Loop : 조건(Boolean)이 True인 동안 Loop Body를 반복 실행

Loop Body : 조건을 만족할 때(True) 반복하며 실행되는 코드

Completed : 조건을 만족하지 않을 때(False) 빠져나오는 코드

반복문을 한번 실행할 때 마다, Count에서 숫자 1을 빼주는 노드를 추가. 그리고 반복문을 빠져나올 때, Print Text 노드를 실행하도록 구현
테스트 결과

3-2. For Loop

For Loop는 특정 인덱스 범위 내에서 계속 반복 하는 노드. 레벨 블루프린트 화면에서 우클릭하여 For Loop를 검색.
흐름 제어 항목에서 For Loop를 클릭하면 다음과 같은 노드가 생김. Last Index를 5로 설정하면, 0부터 5까지 Index가 증가하면서 반복문이 실행. 즉, 인덱스의 범위를 지정해주면 인덱스 개수만큼 반복문이 실행되는 것.

 

First Index : 인덱스 시작값

Last Index : 인덱스 종료값

Loop Body : 조건을 만족할 때 반복하며 실행되는 코드

Index : 현재 인덱스값

Completed : 조건을 만족하지 않을 때 빠져나오는 코드

다음과 같이 노드들을 생성하여 연결. 인덱스를 출력하는 노드와, 반복이 종료되면 End!를 출력하는 노드를 생성.
이를 실행하면 아래와 같은 결과가 나옵니다. Last Index 결과 값이 포함되어 출력되는 것을 확인.

3-3. 구구단 구현

For Loop 노드를 생성하고 조건에 맞추어 Index 값을 입력.
For Loop노드에 Print Text 노드를 연결하여 출력.
다음과 같이 2부터 9까지의 숫자가 화면에 출력. 2부터 9단까지의 각 단에 해당하는 숫자는 해당 For Loop를 통해 구현 가.
각 단은 다시 1부터 9까지의 숫자를 곱한 결과로 이루어진다. 1부터 9까지의 숫자를 표현하기 위해서는 새로운 For Loop 노드가 필요.
이제 숫자는 반복할 수 있는데, 이 숫자들을 담을 변수가 필요. 인티저 변수 A, B를 생성하고 각 For Loop 인덱스를 연결.
첫 번째 For Loop 노드가 반복할 때, 그 인덱스 값은 인티저 변수 A에 할당되며, 두 번째 For Loop 노드가 반복할 때, 그 인덱스 값은 인티저 변수 B에 할당된다. 즉, 두 변수 A, B를 곱한 결과가 구구단 연산의 결과라고 할 수 있음. 곱셈은 Multiply 연산자 노드를 이용해 구현하고, 연산의 결과를 출력하기 위해 Format Text 노드, Print Text 노드를 생성해 연결.
이를 실행하면 위와 같이 구구단의 결과가 화면에 출력.

 

3. 흐름 제어 - 반복문 (Loop)

구분 학습 내용 주요 개념 / 노드 핵심 포인트
3-1. While Loop 조건이 True인 동안 반복 While Loop, Condition, Completed 조건 기반 반복, Count-- 연산 사용
3-2. For Loop 지정한 인덱스 범위 반복 For Loop, Index, Completed 0~N까지 자동 증가 반복
3-3. 구구단 구현 중첩 For Loop로 2~9단 출력 For Loop ×2, Multiply, Format Text A×B 구조로 반복 출력

 

4-1. 열거형 파일 생성

콘텐츠 브라우저 → 우클릭 → Blueprints > Enumeration (이너머레이터)
이너머레이터 추가 를 눌러서 원하는 만큼 상수 값을 열거기에 입력할 수 있다.
만든 열거형은 아래와 같이 변수 항목에서 타입을 검색 하여 생성할 수 있다.
열거형 변수를 생성하고 컴파일 후 저장하면, 기본값들이 앞서 우리가 설정한 내용으로 뜨는 것을 확인할 수 있다. 단순히 0, 1, 2 숫자로 값을 설정하는 것보다 가독성도 좋아지고, 무언가를 할당할 때 실수할 일도 적어다.
또한, Switch on 노드 를 사용하면 해당 하는 값마다 원하는 로직을 설정할 수도 있다.

 

4. 블루프린트 열거형 (Enum) 

구분 학습 내용 주요 개념 / 노드 핵심 포인트
4-1. 열거형 파일 생성 상수들을 그룹화하여 관리 Enumeration, Switch on Enum 숫자 대신 이름으로 구분, 가독성 향상
활용 아이템 슬롯, 상태 구분 등 Enum 변수, Switch on Enum 하드코딩 방지, 유지보수 용이

 

5-1. 발사 & 재장전 버그 수정

 

4-2. While Loop로 구구단 구현

 

5. 숙제 (과제)

구분 학습 내용 주요 개념 / 노드 핵심 포인트
5-1. 발사 & 재장전 버그 수정 Bullet이 0 이하일 때 발사 불가, 30일 땐 재장전 X Branch, Comparison(≤, ==) 조건문으로 예외 처리
5-2. While Loop 구구단 구현 For Loop 대신 While Loop로 구구단 구현 While Loop, Variable 증가(++) 조건식 기반 반복 제어 학습

 

간단한 상호작용 구현 (문 열기 또는 아이템 줍기)

⭐왜 중요한가?⭐

상호작용은 사용자가 게임과 소통하는 핵심 수단이다. 문을 열거나 아이템을 줍는 것처럼 단순한 기능이라도, 사용자 경험을 ‘게임답게’ 만드는 결정적인 요소이다. 이 과제를 통해 블루프린트를 활용한 기본 인터랙션 구현 능력을 갖추게 된다.

구분 내용
1. 오늘 배운 개념 요약 - 상호작용(Interaction) : 플레이어가 환경과 소통하는 기본 메커니즘.
- Line Trace : 카메라 앞(또는 캐릭터 시야 방향)으로 보이지 않는 선을 쏴서 오브젝트 탐지.
- Input Mapping (E키) : 키보드 입력을 통해 특정 이벤트 실행.
- Actor Tag 활용 : 상호작용 가능한 오브젝트 구분을 위해 태그 사용 (예: “Interactable”).
2. 구현 과정 요약 [Step 0] Interact 입력 설정
Project Settings → Input → Action Mappings → “Interact” 추가 (키: E)
[Step 1] 블루프린트 생성
BP_InteractableDoor 또는 BP_PickupItem 생성 → Static Mesh 설정 → Collision: BlockAll
[Step 2] Line Trace 구현
MyCharacter 블루프린트에서 E키 입력 → LineTraceByChannel → BreakHitResult → Tag 확인
[Step 3] 상호작용 동작 구현
- 문: SetRelativeRotation으로 회전
- 아이템: Destroy Actor로 제거
[Step 4] 테스트
상호작용 대상에 Tag “Interactable” 추가 → E 키 입력으로 문 열기 / 아이템 줍기 확인
3. 느낀 점 & 개선하고 싶은 점 느낀 점
- 단순한 E키 상호작용이지만, 게임의 몰입감을 높이는 핵심 기능임을 느꼈다.
- 블루프린트를 활용해 논리적으로 이벤트를 연결하는 과정이 재밌었다.
⚙️ 개선하고 싶은 점
- Line Trace 범위를 카메라 중심으로 보정하고 싶다.
- UI(예: “Press E to Interact”)를 추가해 플레이어 피드백을 강화하고 싶다.

'내일배움캠프 Unreal_7기 > 사전캠프' 카테고리의 다른 글

사전캠프 TIL - 10일차  (0) 2025.11.14
사전캠프 TIL - 9일차  (0) 2025.11.13
사전캠프 TIL - 7일차  (0) 2025.11.11
사전캠프 TIL - 6일차  (0) 2025.11.10
사전캠프 TIL - 5일차  (0) 2025.11.07