언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

게임 맵 - 2) 던전 구조물과 입구 추가

monstro 2026. 1. 10. 19:39
728x90
반응형

- 개요

던전에 새로운 구조물들을 추가하고 또 다른 지역으로 입장할 수 있는 던전 입구를 추가한다

 

- C++ 사이드

1) LoadScreenSaveGame 클래스

 

맵 애셋의 이름을 지정하는 MapAssetName 멤버변수를 추가한다

 

2) AuraGameModeBase 클래스

 

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

 

 

SaveWorldState 함수를 위와 같이 수정하여 인자로 받은 값이 빈 값이라면,

SaveGame 인스턴스의 MapAssetNameMapName을 임의로 설정한다

 

 

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 MapDestination Player Start Tag의 값을 설정한다

 

- 최종 실행 결과

 

728x90
반응형