반응형
트로피 보상 시스템 설정
1. 승리 화면 (Map_End) 설정
- Map_End 레벨에 트로피를 놓을 Platform 액터를 배치합니다.
- Rewards 폴더에서 Bronze Trophy, Silver Trophy, Gold Trophy 스태틱 메시 액터를 레벨의 플랫폼 위에 적절히 배치하고 정렬합니다.
- 트로피 초기 가시성 설정:
- 세 트로피 액터를 모두 선택하고, 디테일(Details) 패널에서 Rendering > Visible 옵션의 체크를 해제합니다. (시작 시 모두 보이지 않도록 설정합니다.)

2. 열거형(Enum) 생성 및 트로피 참조 설정
A. 트로피 열거형 (Enum) 생성

- Blueprints 폴더 내에 **Enumeration**이라는 새 폴더를 생성합니다.
- 이 폴더 안에 마우스 오른쪽 버튼을 클릭하여 Blueprints > Enumeration을 생성하고 이름을 **E_Trophies**로 지정합니다.
- **E_Trophies**를 열고 세 개의 항목을 추가합니다.
- Bronze
- Silver
- Gold

B. Map_End 레벨 블루프린트에 트로피 참조 추가

- Map_End 레벨 블루프린트를 엽니다.
- World Outliner에서 Bronze, Silver, Gold Trophy 액터 세 개를 선택합니다.
- 레벨 블루프린트로 돌아와 마우스 오른쪽 버튼을 클릭하고 **Create Reference to [Trophy Name]**을 선택하여 세 트로피에 대한 참조 변수를 생성합니다.

- 각 트로피 참조 변수에서 드래그하여 Set Visibility 노드를 호출합니다. (새 Visibility를 True로 설정하면 트로피가 보이게 됩니다.)


3. 게임 인스턴스 (Game Instance) 설정
레벨이 전환되면 Game Mode의 변수는 초기화됩니다. 스크롤 카운터에 따른 트로피 타입은 레벨 전환 후에도 유지되어야 하므로, Game Instance를 사용합니다.
A. 커스텀 Game Instance 생성


- Blueprints 폴더에서 마우스 오른쪽 버튼을 클릭하고 Blueprint Class를 생성합니다.
- All Classes를 검색하고 **Game Instance**를 찾아 선택합니다.
- 이름을 **GI_DeathCollector**로 지정합니다.

B. Game Instance에 트로피 변수 추가

- **GI_DeathCollector**를 열고 새 변수 **Trophies**를 생성합니다.
- 변수 타입을 방금 만든 E_Trophies 열거형으로 설정합니다.
C. 프로젝트 설정에서 Game Instance 지정
- Edit > Project Settings으로 이동합니다.
- Maps & Modes 섹션으로 이동합니다.
- 하단의 Game Instance Class를 **GI_DeathCollector**로 변경합니다.

D. Game Instance 인터페이스 설정 (통신용)

BP_GameMode가 GI_DeathCollector의 변수에 접근할 수 있도록 인터페이스를 설정합니다.
- Interfaces 폴더에 Int_GameInstance 블루프린트 인터페이스를 생성합니다.
- 함수 **SetGameInstanceRef**를 만들고 **출력(Output)**을 추가합니다.
- 출력 이름: GameInstance
- 타입: Object Reference
- 참조 클래스: GI_DeathCollector
- **GI_DeathCollector**를 열고 Class Settings에서 **Int_GameInstance**를 추가합니다.
- SetGameInstanceRef 이벤트를 구현하고, 출력 핀에 Self 노드를 연결하여 자신을 참조로 반환하도록 합니다.

4. BP_GameMode에서 트로피 타입 결정 및 저장
플레이어가 플랫폼에 도달했을 때 획득한 스크롤 개수(ScrollCounter)를 확인하고, Game Instance에 트로피 타입을 저장합니다.
A. Game Mode 초기화
- **BP_GameMode**를 열고 **Event BeginPlay**를 추가합니다.
- **Get Game Instance**를 호출하고, 이 출력에서 Set Game Instance Ref (메시지)를 호출합니다.
- Set Game Instance Ref의 출력(Game Instance)을 **변수 승격(Promote to Variable)**하여 GameInstanceRef 변수로 저장합니다. (이제 Game Mode는 Game Instance에 쉽게 접근할 수 있습니다.)
B. 트로피 결정 로직 (인터페이스 사용)
- Int_GameMode 인터페이스를 열고 새 함수 **SetTrophyType**을 추가합니다.
- **BP_GameMode**를 열고 Event Set Trophy Type (인터페이스 이벤트)를 구현합니다.
- ScrollCounter 변수 값을 가져와 조건에 따라 트로피 타입을 설정합니다.
|
조건
|
트로피 타입
|
|
Scroll Counter <= 2
|
Bronze
|
|
Scroll Counter > 2 AND <= 5
|
Silver
|
|
Scroll Counter > 5
|
Gold
|

로직 흐름:
- Event Set Trophy Type 실행 핀에서 시작합니다.
- **ScrollCounter**를 가져와 <= (Less or Equal) 2와 비교합니다.
- 결과를 **Branch**에 연결합니다.
- True: **GameInstanceRef**에서 **Set Trophies**를 호출하고 Bronze를 선택합니다.
- False: 다음 조건(실버)을 검사하는 로직으로 넘어갑니다.
- 다음 조건 (실버): ScrollCounter > 2 와 ScrollCounter <= 5 두 조건을 각각 비교합니다.
- 두 결과를 And 불리언 노드로 연결합니다.
- 이 결과를 새 **Branch**에 연결합니다.
- True: **GameInstanceRef**에서 **Set Trophies**를 호출하고 Silver를 선택합니다.
- False: 트로피를 Gold로 설정하는 로직으로 연결합니다. (GameInstanceRef에서 **Set Trophies**를 호출하고 Gold를 선택)

5. BP_Platform에서 트로피 타입 결정 호출
- **BP_Platform**의 On Component Begin Overlap 로직으로 돌아갑니다.
- 레벨을 변경하는 Open Level 노드 이전에, Get Game Mode를 호출합니다.
- Get Game Mode의 출력 핀에서 Set Trophy Type (메시지)를 호출합니다. (이것이 Game Mode에게 트로피 타입을 결정하라고 명령합니다.)

6. Map_End 레벨 블루프린트에서 트로피 표시

이제 마지막 단계입니다. 승리 화면이 시작될 때 Game Instance에서 저장된 트로피 값을 읽어와 해당 트로피만 보이게 합니다.
- Map_End 레벨 블루프린트의 Event BeginPlay 로직 (카메라 설정 후)에 연결합니다.
- **Get Game Instance**를 호출합니다.
- Get Game Instance 출력에서 **Cast To GI_DeathCollector**를 호출하여 Game Instance 참조를 가져옵니다.
- GI_DeathCollector 출력에서 Get Trophies 변수를 가져옵니다.
- Get Trophies 열거형 변수를 Switch on E_Trophies 노드에 연결합니다.
- Bronze 핀: Bronze 트로피의 **Set Visibility**를 True로 설정하는 노드에 연결합니다.
- Silver 핀: Silver 트로피의 **Set Visibility**를 True로 설정하는 노드에 연결합니다.
- Gold 핀: Gold 트로피의 **Set Visibility**를 True로 설정하는 노드에 연결합니다.
반응형
'Unreal Engine' 카테고리의 다른 글
| Unreal Engine 간단한 스크롤 수집 게임 10 (0) | 2025.11.14 |
|---|---|
| Unreal Engine 간단한 스크롤 수집 게임 8 (0) | 2025.11.13 |
| Unreal Engine 간단한 스크롤 수집 게임 7 (0) | 2025.11.13 |
| Unreal Engine 간단한 스크롤 수집 게임 6 (0) | 2025.11.13 |
| Unreal Engine 간단한 스크롤 수집 게임 5 (0) | 2025.11.13 |