- 개요
던전에 새로운 구조물들을 추가하고 또 다른 지역으로 입장할 수 있는 던전 입구를 추가한다
- C++ 사이드
1) LoadScreenSaveGame 클래스

맵 애셋의 이름을 지정하는 MapAssetName 멤버변수를 추가한다
2) AuraGameModeBase 클래스

기존의 함수를 위와 같이 수정하고 새로운 함수를 추가한다

SaveWorldState 함수를 위와 같이 수정하여 인자로 받은 값이 빈 값이라면,
SaveGame 인스턴스의 MapAssetName과 MapName을 임의로 설정한다

GetMapNameFromMapAssetName 함수의 로직은 위와 같다
Maps 멤버변수를 순회하면서 인자로 받은 이름과 동일한 맵 애셋의 맵 이름을 반환한다
3) HighlightInterface 클래스

SetMoveToLocation 함수를 추가하여 타겟팅된 대상으로부터 플레이어가 이동할 방향을 설정한다
4) Checkpoint 클래스

상속관계에 HighlightInterface를 추가하여 필요한 함수들을 오버라이드한다
또, 멤버변수를 다음과 같이 수정한다
- bReached 멤버변수 : BlueprintReadWrite 어트리뷰트 추가
- bBindOverlapCallback 멤버변수 : 새롭게 생성하여 오버랩 콜백 함수를 호출해야 하는지 결정
- MoveToComponent 멤버변수 : 새롭게 생성하여 플레이어가 이동할 방향을 지정
- CustomDepthStencilOverride 멤버변수 : 새롭게 생성하여 타겟팅되었을 때의 시각효과의 수치를 지정

생성자를 위와 같이 수정하여 메쉬에 외곽선 효과를 반영하고 이를 렌더링 시스템에 반영한다
또, MoveToComponent를 생성하고 루트 컴포넌트에 부착한다

BeginPlay 함수에 위의 로직을 추가하여 오버랩되었다면 OnSphereOverlap 함수를 Sphere에 바인드한다

HighlightInterface 클래스로부터 상속받아 오버라이드한 함수들은 각각 다음과 같다
- SetMoveToLocation 함수 : 인자로 받은 FVector의 값을 MoveToComponent의 값으로 설정
- HighlightActor 함수 : 외곽선 효과를 적용
- UnHighlightActor 함수 : 외곽선 효과를 해제
5) MapEntrance 클래스

Checkpoint 클래스로부터 상속받아 던전의 입구 역할을 하는 MapEntrance 클래스를 생성한다
멤버변수의 구성은 다음과 같다
- DestinationMap 멤버변수 : 이동할 맵
- DestinationPlayerStartTag 멤버변수 : 이동할 맵의 PlayerStart의 태그

생성자는 위와 같이 설정하여 Sphere 컴포넌트를 MoveToComponent에 부착한다

HighlightActor 함수의 로직은 위와 같이 구성하여 외곽선 효과를 활성화한다
LoadActor 함수는 따로 로직을 구성하지 않는다

OnSphereOverlap 함수는 위와 같이 구성한다
bReached의 값을 True로 설정하고 GameMode를 가져와 SaveWorldState 함수를 호출한다
이후 오버랩된 플레이어로부터 SaveProgress 함수를 호출하고 게임 데이터를 저장한다
최종적으로 OpenLevelBySoftObjectPtr 함수를 호출하여 원하는 맵을 오픈한다
6) AuraPlayerController 클래스

AbilityInputTagPressed 함수를 위와 같이 수정하여 왼쪽 마우스 키를 눌렀을 때만 TargetingStatus를 설정한다

AbilityInputTagReleased 함수를 위와 같이 수정하여
HighlightInterface를 상속받은 대상으로부터 클릭중인 마우스를 뗐다면 SetMoveToLocation 함수를 호출하고
마우스 타겟팅을 막는 대상으로부터 클릭중인 마우스를 뗐다면 SpawnSystemAtLocation 함수를 호출한다
7) AuraEnemy 클래스


HighlightInterface로부터 상속받은 SetMoveToLocation 함수를 위와 같이 빈 로직으로 오버라이드한다

생성자에 위의 로직을 추가하여 무기 메쉬와 몬스터 메쉬에 외곽선 효과를 반영하고 렌더링 시스템에 반영한다
- 블루프린트 사이드
1) BP_AuraGameMode 블루프린트

Maps 멤버변수에 이동할 다른 맵과 맵의 이름을 추가한다
2) BP_Beacon 블루프린트

CheckpointReached 이벤트를 위와 같이 작성하여 반짝임 효과를 추가한다

Overlap 이벤트를 위와 같이 작성하여 오버랩된 대상이 플레이어라면
HandleGlowEffects 함수를 호출하고 Reached 변수의 값을 True로 설정한다
3) BP_MapEntrance 블루프린트

BP_MapEntrance 블루프린트의 인스턴스의 Destination Map과 Destination Player Start Tag의 값을 설정한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 게임 맵 - 4) 아이템 드롭 (0) | 2026.01.12 |
|---|---|
| 게임 맵 - 3) 몬스터 스포너와 맵 재시작 구현 (0) | 2026.01.11 |
| 게임 맵 - 1) 커서 동작 수정 (0) | 2026.01.09 |
| 체크 포인트 - 최종) 월드 저장하고 불러오기 (0) | 2026.01.09 |
| 체크 포인트 - 3) GameplayAbility 저장 + 불러오기 (0) | 2026.01.02 |