Unreal Engine/Asset Analysis

Ultimate Scan Effects and Screen Effects

보별 2025. 7. 8. 09:10
반응형

https://www.fab.com/listings/446dea06-546a-4ffc-8252-b709a623c1f5

위 링크에 있는 "Ultimate Scan Effects and Screen Effects" Asset에 대한 간단한 분석 및 사용법이다.

분석하고 사용하기에 크게 어려움이 없는 Asset이다.

해당 Asset 폴더 중, "Blueprints" 폴더의 "BP_Scan_Player""BP_Target_Actor", "Blueprints" 폴더에 같이 있는 "Demo_BP" 폴더 안의 BP, 그리고 "Widget" 폴더의 "WBP_Target" 위주로 확인하면 된다.
"Widget" 폴더의  "WBP_Player_HUD" 는 Asset의 Demo 레벨에서 Scan 효과를 바꾸는 법을 가르쳐주는 Wiget이기에 사용할 필요가 없다.

위에서 언급한 BP에서 Interface를 사용하는데, Interface를 수정 및 추가하고 싶은 경우, "Blueprints" 폴더의 "BPI_TargetInterface" 에서 수정 및 추가하면 된다.

 

사용법 및 결과

1. Player의 BP에 Child Actor로 "BP_Scan_Player" 를 추가하고, "Child Actor Template""Settings" 에서 원하는 Scanning Effect, Scanning Sound를 설정할 수 있다.

2. Scan 대상(Widget이 출력 대상)의 BP에 Child Actor로 "BP_Target_Actor" 를 추가하고, "Child Actor Template""Settings" 에서 "Distance Enable", "Icon Enable" 체크해준다. ; 체크해줘야 해당 Asset과 연동된 Widget이 출력

3. Scan 대상 BP의 "Class Settings"에서 "BPI_TargetInterface" 를 추가해준다.

4. "Demo_BP" 폴더 안의 아무 BP를 열고 "Event Graph" 탭으로 가보면, 아래 그림과 같은 BP 뭉텅이가 있는데, 해당 BP를 전부 복사해서 Scan 대상의 "Event Graph" 탭에 붙여넣어준다.

Player에서 Scannig에 바인딩한 키를 누르면 아래 그림과 같이 Scanning Effect가 출력되면서 Widget이 출력되는 것을 확인할 수 있다.

 

BP 흐름도 이해에 필요한 변수 설명

변수는 크게 설명할 것이 없고, "BP_Scan_Player" 에 있는 일부 변수만 이해하면 되고, 왜 이 변수들이 아래와 같은 역할을 하는지는 아래 BP 흐름도 설명을 통해 이해할 수 있다.

ElapsedTime: Scan 후 경과 시간; 재사용 대기시간과 연루되어 사용

DiscoveryDuration: Widget 출력 시간

ScanDelay: Scan 기능 재사용 대기시간

위 변수 외에는 직관적인 변수라 크게 이해하는데에 설명이 필요한 변수는 없다.

 

BP 흐름도

Scan 키를 누르면, Player에서 추가한 Child Actor인 "BP_Scan_Player" 에 있는 Start Scan 함수를 호출하게 된다.

본인의 프로젝트에 맞게 수정한 상태라 원본과는 다름

Start Scan 함수가 실행되면, Timeline을 사용한 Scanning Effect를 출력하고, Multi Sphere Trace에 Hit된 대상들에게 Enable Target Interface를 호출하면서, Hit된 대상들과 해당 대상들의 위치, Discovery Duration 변수에 대한 정보를 전달하게 된다.
* Scanning Effect는 "BP_Scan_Player""UpdatePostProcess" 와 관련 있음

Start Scan 함수 위쪽에 보면 위 그림과 같이 노드가 한 줄 더 있는데, 해당 노드는 Scan의 재사용 대기시간을 설정하는 노드이다.
Scan을 시작하면 Elapsed Time 변수에 Delta Seconds를 기록하고, Scan Delay에 설정한 수치보다 1초를 추가한 시간이 되면 Scan을 다시 사용 가능하도록 해주는 것이다.

본인의 프로젝트에 맞게 수정한 상태라 원본과는 다름

Scan 대상에 추가한 Enable Target Interface가 실행되면 "BP_Target_Actor"Discover Target 함수를 호출하게 된다.

본인의 프로젝트에 맞게 수정한 상태라 원본과는 다름

"BP_Target_Actor"Discover Target 함수가 실행되면, "WBP_Target"Enable HUD 함수를 호출하면서, 사용법 2번에 나와있는 "Distance Enable", "Icon Enable" 의 변수 대한 정보도 추가로 전달해주게 된다.

본인의 프로젝트에 맞게 수정한 상태라 원본과는 다름

"WBP_Target"Enable HUD 함수가 실행되면서 "Distance Enable", "Icon Enable" 에 따른 Widget이 출력되고, "Distance Enable" 변수가 체크됐을 경우, 해당 액터와의 거리가 출력되게 된다.
그리고 "BP_Scan_Player" 에서 전달받은 Discovery Duration 변수의 시간만큼 Widget이 출력되고, 시간이 지나면 Widget이 사라지게 된다.

Asset에 대한 분석 및 설명은 끝났고, 이하는 본인의 프로젝트에서 용도에 맞게 수정한 내용을 기록한 것이니 참고할 분들은 참고하면 되겠다.

 

Asset 수정 사항

BP_Scan_Player

Scan 재사용 대기시간

- 중요한 수정 사항 없음

Scan

- Scan 진행 시 Player의 화면에 Fade 효과를 주는데, 해당 효과가 필요없기에 노드 연결 해제
- 후술할  Last Scanned Targets 배열 초기화 및  Last Scanned Targets 배열에 있는 액터들의 Widget 비가시화

- Scan 시 Player가 이동하면, Scan 대상의 위치와 Player의 거리값이 Scan을 시작하는 위치가 아닌, Widget이 출력될 때 있던 Player의 위치로 계산했어서, Scan을 시작하는 위치를 Initial Trace Start Location 변수로 만들어 저장
- Scan 시 Multi Sphere Trace에 Player가 Hit돼서 Detected Actors에 Player가 추가되는 문제가 있기에, Get All Actors of Class 노드를 추가하여 Player는  Detected Actors 배열에 포함되지 않게 함

- Get Nearest Enemy 함수를 추가해서 Player와 가까운 8명의 Enemy만 선출하도록 함; Get Nearest Enemy 함수에 대한 설명은 아래에 있음

-  Get Nearest Enemy 함수에서 Player와 가까운 8명의 Enemy만 선출하였지만, Widget 출력 시에는 8명보다 많이 출력되는 경우가 있어서, For Each Loop with Break 노드를 사용하여 Widget을 출력할 Enemy를 한 번 더 8명으로 제한시킨 뒤 Last Scanned Targets 배열에 추가함

Get Nearest Enemy 함수

- Temp Actors 배열을 만들어 Multi Sphere Trace에 탐지되는 모든 Actor를 임시로 저장하도록 하였고, Out Actors 배열은 최종적으로 선출할 기준에 맞는 액터들을 저장하기 위해 생성

- Best Distance 변수에 아무 수치를 집어넣은 뒤, Multi Sphere Trace에 탐지되는 액터와 Player 간 거리가 가장 가까운 것을 Best Distance 변수에 대입

- Multi Sphere Trace에 탐지되는 액터와 Player 간 거리가 가장 가까운 것은 Out Actors 배열에 담고 Temp Actors 배열에서는 제외시킴; 위 과정을 가장 가까운 8명이 선출될 때까지 Loop

Scan 대상 BP

Interface 호출

- Start Scan 함수가 실행됐을 때 제일 먼저 실행되는 Disable Target Interface는, 기존에 Scan이 된 대상들에게 출력된 Widget을 비가시화하기 위해 만든 Interface로 사용
- Start Scan 함수가 실행됐을 때 최종적으로 실행되는 Enalbe Target Interface는,  Disable Target Interface에서 비가시화했던 Widget을 다시 가시화하기 위해 노드 추가 연결

BP_Target_Actor

Enable HUD 정보 전달

- 탐지된 액터의 이름을 Widget에 표시하기 위해 Target Name Text가 전달되도록 추가

WBP_Target

Widget 영구 출력

- WBP_Target의 BP는 원래 모두 흐름선이 연결돼서, Discovery Duration 변수의 시간만큼 Widget이 출력된 뒤 사라지는 효과였으나, 한 번 출력된 Widget을 영구적으로 유지하고 싶어서 사라지는 쪽 노드 연결선 끊음; Discovery Duration 현 프로젝트에서는 의미없는 변수

결과물

'Unreal Engine > Asset Analysis' 카테고리의 다른 글

Super Pack Magic VFX  (0) 2025.08.18
Level Up! VFX  (0) 2025.08.01