본문 바로가기
공부/Unreal Engine 5

[언리얼5] 플레이어 사망 이펙트, 무기 드랍

by MY블로그 2024. 3. 12.

플레이어가 사망하였을때 장착중인 현재의 무기를 그자리에 떨어뜨리도록 구현.

추가적으로 플레이어 사망시 단순하게 몽타주만 재생하지 않고 머티리얼에 Dissolve 효과를 추가하여 서서히 사라지도록 설정.

 

Dissolve

노이즈 텍스처를 사용한 Dissolve의 기본 템플릿. 머티리얼 편집은 BP를 사용

머티리얼의 블렌드 모드 = Masked

에셋의 머티리얼의 이미시브컬러와 오파시티 마스크의 노드만 작성

Dissolve 파라미터, Glow 파라미터의 2개 파라미터값을 런타임중 변경 할 수있도록 작성

만일 플레이어로 사용하는 에셋의 머티리얼이 아래처럼 부위별로 나뉘어져있다면 각 부위별로 모두 머티리얼 인스턴스를 생성해서 Dissolve 로직을 적용 시켜줘야한다.

 

개인 코드 참고

플레이어 클래스에 커브를 사용한 다임라인 으로 파라미터의 값을 변경.

Dissolve 효과가 적용된 머티리얼 인스턴스를 배열에 저장하고 특정이벤트에서 해당 배열을 포인터로 저장하여 머티리얼의 파라미터값(Dissolve,Glow)을 코드상에서 변경한다.

 

플레이어 헤더

 

플레이어 CPP 함수 내부의 일부

StartDissolve 함수를 호출시 타임라인flot의 트랙에 매프레임 Curve에 설정한 값으로 업데이트 된다.

이때의 값은 UpdateDissolveMaterial 함수의 매개변수로 들어가게되고 원하는 머티리얼 인스턴스의 파라미터값을 Curve의 값으로 세팅. 

 

WeaponDrop

무기 클래스에 상태를 지정하는 Enum 을 두고 무기자체가 플레이어가 장착중인지 맵상에 드랍되어있는 상태인지를 구분하여 각상태마다의 변화를 설정.

이때 클라이언트에서값이 없데이트 되는것과 서버에서 업데이트 되는것을 따로 설정 할 필요가 있다.

무기의 상태 자체는 복제하여 업데이트 한다.

플레이어 사망시 호출되는 함수.

무기의 상태를 바꾸고 디테치를 사용한다.

월드상에 떨어뜨린후 해당무기의 오너는 Player에서 nullptr 로 지정.

댓글