0. 개요
던전 레벨을 진행하면 캐릭터가 특정 액터에 가려지는 상황이 발생하게 된다.
이런 현상을 방지하기 위해 액터가 캐릭터를 가리지 않고 투명하게 변화하도록 하는 액터를 생성한다.
(1) 사전 설정
레벨 내의 던전 배경을 위한 액터들을 선택하고 콜리전 프리셋의 Camera를 Ignore로 설정한다.
1. 페이드 액터 블루프린트
(1) BP_FadeActor 블루프린트
스태틱 메시를 가지는 액터를 생성한다.
해당 메시의 머티리얼을 수정해 투명해질 수 있도록 할 것이다.
(2) 위 메시의 머티리얼을 복사, 수정
머티리얼 - 블렌드 모드를 Masked로 설정해야 투명도를 씌울 수 있다.
(3) 오파시티(투명도) 마스크
머티리얼 그래프에서 숫자 '1'을 누르면서 왼쪽 버튼으로 바닥을 클릭하면 값을 입력하는 노드가 나타난다.
해당 노드를 오파시티 마스크에 연결한다.
그러나 값을 연결해도 사라지거나 생기기만 할 뿐 투명해지지 않는다.
이를 해결하기 위해 Dither Temporal AA 노드를 사용한다.
값이 낮아질 수록 노이즈가 생기고, 갚이 높아질 수록 하얗게 보인다.
이를 오파시티 마스크에 연결하면 투명도가 적용된 것처럼 보인다.
(4) 값을 파라미터로 변경하고 머티리얼 인스턴스 생성하기
우클릭 - 파라미터로 변환을 클릭하여 값을 파라미터로 변경한다.
이제 이 머티리얼을 컨텐츠 서랍에서 우클릭하여 머티리얼 인스턴스를 생성한다.
위에서 변환한 파라미터의 값을 블루프린트에서 조절할 수 있게 되었다.
2. 다이내믹 머티리얼(Dynamic Material)
메시는 여러 개의 머티리얼을 가질 수 있다.
다이내믹 머티리얼은 런타임에 머티리얼 인스턴스를 생성하고 머티리얼의 파라미터를 동적으로 변경할 수 있게 한다.
(1) BP_FadeActor / Construction Script에서 다이내믹 머티리얼 인스턴스 생성
메시로부터 머티리얼을 가져와 배열로 저장한다.
Fade 버전의 머티리얼들을 순회해 다이내믹 머티리얼 인스턴스로 생성하고 배열로 저장한다.
(2) Set Material To Dynamic Instances 함수
가져온 머티리얼을 메시의 머티리얼로 설정하는 함수이다.
(3) BeginPlay
이제 Set Scalar Parameter Value를 이용해 다이내믹 머티리얼 인스턴스의 파라미터를 조절할 수 있게 되었다.
(4) 타임라인으로 서서히 투명해지게 만들기
틱을 사용하지 않고 타임라인을 사용할 것이다.
이제 머티리얼의 값이 타임라인의 값 대로 변화할 것이다.
FadeIn은 위 타임라인을 거꾸로 실행하게 된다.
(5) FadeIn 이후 머티리얼을 원상 복구하기
더이상 물체가 가려지지 않을때 Fade 머티리얼이 아닌 원본 머티리얼을 적용하도록 한다.
(6) 테스트
이제 이 액터가 투명해졌다가 원래대로 돌아오는지 확인한다.
(7) 투명도에 따라 채널에 대한 콜리전 응답 변경
불투명한 상태라면 Visiblity를 Block으로, 투명한 상태라면 Visiblity를 Ignore로 바꾼다. 이를 함수로 접어서 사용한다.
3. 캐릭터의 위치에 따라 액터 가리기
(1) BP_FadeActor 메시에 대해 콜리전 설정
(2) 블루프린트 인터페이스 생성
캐릭터가 Fade Actor에 대해 의존성을 가지게 하지 않기 위하여 인터페이스를 생성한다.
(2-1) BP_FadeActor에서 Fade Out / Fade In 커스텀 이벤트 삭제
이제 상속받은 Fade Interface에서 노드를 가져와 사용할 것이므로 커스텀 이벤트 노드를 삭제한다.
(2-2) BP_FadeActor에서 인터페이스 추가
(3) Aura 캐릭터에서 스프링 암에 충돌 감지 박스 추가
이 박스와 충돌하는 액터를 투명하게 만들 것이다.
박스가 Aura 캐릭터의 캡슐을 가리지 않도록 설정한다.
(4) 박스에 대해 오버랩 이벤트 설정
(5) BP_FadeActor의 콜리전 오브젝트 타입 WorldStatic으로 변경
가려지는 액터는 대부분 배경이므로 오브젝트 타입을 WorldStatic으로 지정하고 박스에서도 WorldStatic에 대해서만 오버랩을 감지할 것이다.
(6) Aura 캐릭터의 Box 컴포넌트의 오브젝트 반응 변경
4. 다른 액터에 페이드 적용하기
이제 해당 기능을 다른 액터에도 적용할 수 있다.
가리기를 적용하고 싶은 액터에 1-(4)를 참고하여 가리기 머티리얼을 생성하고 값을 파라미터로 변환하면 된다.
(1) 3x3x2 블록에 적용
(1-1) 머티리얼 복제 후 수정
(2) BP_FadeActor를 상속받는 액터 생성
블루프린트의 톱니바퀴 버튼을 눌러 상속된 변수를 표시한다.
메시를 선택하고 가려지는 머티리얼 인스턴스를 지정한다.
이 타일은 기본적으로 머티리얼을 두개 사용하므로 두개 다 지정한다.
(순서대로 설정해야함)
5. 클릭으로 이동 - Visibilty 콜리전 채널
이 프로젝트에서는 클릭으로 이동하기 위해 Visibilty 채널을 사용하고 있다.
내비 메시에 대해 해당 채널이 Block으로 설정되어 있어야 해당 위치로 이동할 수 있으며
해당 채널이 Ignored로 설정되어 있으면 해당 위치로 이동할 수 없다.
예를 들어, 계단을 FadeActor로 생성했다면, 계단을 오르내릴 때 Visibilty가 Block으로 되어있어야 한다.
하지만 계단이 캐릭터를 가릴때 계단이 투명해지게 된다.
이 때 계단이 투명해진 부분을 클릭하면 캐릭터가 해당 부분으로 이동하려하기 때문에 Visibilty가 Ignored로 설정되어야 한다.
따라서 FadeActor 블루프린트를 개선하여 Fade 값의 변화에 따라 Visibilty에 대한 반응을 선택하도록 한다.
멤버 변수인 Block Visiblity 여부에 따라 콜리전 반응을 바꿀지 선택할 수 있게 되었다.
기본값은 false로 설정한다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
18-3. 던전 레벨 - (3) 화염 기둥 (0) | 2025.01.09 |
---|---|
18-2. 던전 레벨 - (2) 내비 메시, 텍스쳐 스트리밍 풀 예산 초과 (0) | 2025.01.09 |
18-1. 던전 레벨 - (1) 레벨 라이팅, 포스트 프로세스 (0) | 2025.01.09 |
17-13. 전투 폴리싱 - (9) 몬스터 파이어볼트 각도, 메모리 누수, 디버그 (0) | 2025.01.09 |
17-12. 애니메이션 - (1) 트위닝(Tweening)을 이용한 애니메이션 생성 (0) | 2025.01.09 |