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

[언리얼5] 파티클 이펙트(+Radial Force)

by MY블로그 2023. 11. 6.

[참고사항]

에셋은 하나의 프로젝트에 전부 추가하고(ex. Assets_Project),

이주(에셋전용 프로젝트의 원본에셋 우클릭>에셋액션>이주)를 통해서 사용하고자하는 프로젝트로 복사해서 사용하기.

이주할때는 Content 폴더로 이주하는데 이름이 겹치지 않도록 주의!


 

언리얼4를 통해서 공부한 파티클 이펙트를 언리얼5에 사용해 보도록 합니다.

에픽게임즈에서 적절한 이펙트를 에셋전용 프로젝트에 추가하고 해당 프로젝트내부에서 에셋 이주를 통하여

현재 작성중인 프로젝트에 에셋을 이주 해옵니다.

 

1. 파티클 블루프린트 생성하기

파티클의 재생은 플레이어의 키입력이벤트를 통하여 재생이벤트가 호출되도록 작성.

파티클은 이벤트 그래프만 사용합니다.

Add Custom Event 메뉴를 통하여 SpawnParticle 이벤트를 생성합니다.

해당이벤트에는 파티클의 생성 위치값을 받아올 Point 입력값을 추가합니다.

 

파티클재생에 사용되는 함수인 Spawn Emitter at Location 함수를 생성하고 이벤트와 연결합니다.

Emitter Template 메뉴에는 사용할 파티클을 검색하여 넣어줍니다.

 

파티클을 재생시키는 함수까지만 사용한다면 플레이어의 키입력이벤트 발생시 SpawnParticle 이벤트를 호출하여 단순하게 폭발 이펙트를 재생할 수 있습니다.

 

아래의 플레이에 이벤트 그래프중 파티클 이펙트가 실행되는 그래프 입니다.

키가 눌렸을때가아닌 떼었을때 한번만 실행되며 이펙트 생성 위치는 플레이어 캐릭터의 위치

 

2. 폭발 범위 생성과 폭발 충돌 구현

단순하게 이펙트만 재생하기보다는 폭발효과에 맞추어 주변의 물체에 영향을 주는 효과를 적용해보도록 합니다.

파티클의 블루프린트에서 함수들을 추가 합니다.

1번 단계의 Spawn Emitter at Location 함수 이후에 입체 구형의 영역 범위를 지정해주는 함수를 연결합니다.

Multi Sphere Trance For Objects 함수에 영역의 시작지점(Start)과 끝지점(End), 범위(Radius), 영역과 충돌 판정할 타입(Object Type)의 배열을 지정합니다.

현재 시작지점과 끝지점은 플레이어의 위치값을 받아오므로 플레이어의 위치에 지름 600의 원형영역을 생성하고

단순히 PhysicsBody 타입으로 설정된 Object 들과의 충돌을 판정합니다.

참고 : Trace Color, Trace Hit Color , Draw Time을 값을 설정하고 Draw Debug Type을 설정해주면 영역생성시 어느정도 크기인지 확인가능! Draw Debug Type을 None 으로 설정한다면 게임실행시 영역을 그리지 않습니다.

 

충돌한 물체들은 OutHits 배열에 저장됩니다.

해당 작업이후에 For Each Loop (반복문)에서 배열내부에있는 Element를 검사합니다.

 

검사작업이후에 Break Hit Result를 통해서 충돌한 배열 Element를 형변환하여 타겟으로 변환합니다.

변환된 오브젝트는 Add Radial Force 함수(원형의중심점으로부터 외부로 충격)로 힘의 영역과 밀려나는 힘을 지정해 주도록 합니다.

 

여기서 주의해야할점은 레벨에 배치된 오브젝트에는 무게가 적용되어있기떄문에

10,100 등의 작은단위 숫자로는 힘의 적용이 눈에 띄지 않습니다. 때문에 어느정도 큰값을 주어야 합니다.

 

 

Strength 값에 따른 폭발력 비교 (피직스 시뮬레이트 무게 : 20kg)

1. 10만

 

 

2. 100만

 

댓글