유니티 2D 이펙트 - yuniti 2D ipegteu

졸업 작품을 하면서 이펙트를 만들 필요성이 생겼습니다. 달리기와 착지 동작을 하면서 캐릭터의 발에서 먼지가 나오는 효과가 필요했는데 이펙트 툴을 쓸 줄 모르기에 파티클 이펙트로만 해결을 봐야 합니다.

아무튼 2D라서 다행이네요

먼저 아트 팀에 구름같은 분위기의 먼지 리소스를 요청했습니다.

유니티 2D 이펙트 - yuniti 2D ipegteu
Effect_FootDust

아틀라스 이미지로 금방 잘 뽑아 주셨습니다.

이제 받은 리소스를 활용하기 위해 유니티 엔진에서 파티클 시스템을 하나 픽업합니다.

그 다음으로 사용할 이미지 리소스의 인스펙터를 한번 훑어봅시다.

유니티 2D 이펙트 - yuniti 2D ipegteu

여러가지 목록들이 있지만 가장 먼저 해주어야 할 일은 Texture Type을 Sprite (2D And UI)로 바꿔주는 일입니다. 

그 다음으로는 Sprite Mode 를 바꿔주는 일입니다.

Single : 단일 이미지.

Multiple : 복수 이미지를 사각형으로 편집 분할.

Polygon : 스프라이트를 다각형으로 편집 분할.

하단에 Pixels Per Unit과 Default는 임의로 설정한 값으로 맞춰주시면 됩니다.

짤막하게 설명을 하자면 Pixels per unit은 이미지 해상도에 따른 엔진 내 사이즈 조절 기능이고.

Default 내부 값은 이미지 용량 조절이라고 보시면 됩니다. 74x118 같이 작은 사이즈를 512로 맞출 필요는 없겠죠. 적절한 크기로 바꿔 주시면 됩니다.

- 참고로 스프라이트 리소스의 크기는 모두 2의 배수로 맞춰 주는게 좋습니다. 졸작 당시에 작업하다 보니 그런 정보 전달이 부족했네요. -

설정이 끝나면 이미지를 분할해 줘야 하기 때문에 Sprite Editor 버튼을 클릭합니다.

유니티 2D 이펙트 - yuniti 2D ipegteu

Type 은 자르는 방법을 말합니다.

Pivot은 자르는 이미지의 중심점 위치를 말합니다.

Method는 Slice 기능을 작동할 때 어떤 방식으로 이미지를 자를 것인지를 의미합니다. 덧붙여 디폴트인 Delete 기능은 기존 사각형을 모두 지우고 새로운 사각형을 만드는 것입니다.

그냥 일반적인 배경 리소스로 사용할거면 오토로 잘라도 됩니다.애니메이션 적용이 필요한 리소스라면 피봇이 모두 같아야 하기에 Grid by sell 로 변경해 주세요.그 다음으로는 각 애니메이션 리소스의 사이즈를 기입하면 됩니다.

- 보통은 아트 측에서 프레임 모두 동일한 사이즈로 작업하고 아틀라스 이미지를 만들어줍니다. -

유니티 2D 이펙트 - yuniti 2D ipegteu

슬라이스를 하고 어플리를 누르면 이제 리소스는 이렇게 나누어집니다.

6장 모두 성공적으로 잘려졌네요!

리소스 이름은 신경쓰지 말아주세용...

리소스가 준비되었으니 파티클을 작업해 봅시다.

파티클 오브젝트를 누르면 나오는 인스펙터입니다.

달리기를 만드니 신경 써야 할 부분은 가장 먼저 방향이겠죠.

캐릭터가 앞으로 가는데 먼지도 앞으로 갈 수는 없으니까요.

유니티 2D 이펙트 - yuniti 2D ipegteu

간단하게 기본적인 값들을 먼저 확인합시다.

Start Lifetime : 이펙트 생존시간.

Start Size : 시간순에 따라 이펙트 사이즈 조절.

Gravity Modifier : 이펙트 중력값 (먼지는 위로 날아갑니다. 그러니 마이너스로 설정.)

Simulation Space : 해당 항목을 World 로 바꾸지 않으면 트랜스폼이 로컬값으로 들어가 캐릭터에 먼지가 붙어 움직입니다.

지금 수준에서 나머지는 몰라도 괜찮습니다. 저는 디폴트값으로 내버려 두었습니다.

유니티 메뉴얼이 저보다 더 잘 설명해 주니 틈틈히 참고하시면 더 좋습니다.

유니티 2D 이펙트 - yuniti 2D ipegteu

이미션 항목입니다.

파티클의 방출 속도와 타이밍을 건드립니다.

Rate over Time : 시간 단위당 튀어나오는 파티클의 수입니다. 너무 많아도 적어도 볼품없기에 적당히 6개로 했습니다.

유니티 2D 이펙트 - yuniti 2D ipegteu

쉐이프 항목은 쉽게 말하면 파티클이 튀어나가는 분사구의 디자인을 수정하고 속도를 조정할 수 있게 해 줍니다.

사실 저는 뭘 골라도 방향만 잡아 주면 되기에 상관 없는 케이스입니다.

Emit from : 나오는 위치 (Volume 은 전체적으로, Shell 은 가장자리에, Edge 는 끄트머리에 나오는겁니다.)

유니티 2D 이펙트 - yuniti 2D ipegteu

파티클이 살아있는 동안 바뀌는 색을 정해줍니다.

유니티 2D 이펙트 - yuniti 2D ipegteu

클릭하면 이렇게 나옵니다.

왜 중요하냐면 먼지는 시간이 지나면 투명하게 변하면서 자연스럽게 사라져야 하기 때문입니다.

Mode 는 블랜드입니다. Fixed로 하면 뚝뚝 끊기면서 전환됩니다.

다음은 시간순에 따른 사이즈 조절입니다.

투명하게 사라지면서 크기도 줄어들면 더 좋으니까요.

여기서 부터 커브값을 다루게 됩니다.

에...

평범한 그래프라서 원리를 알면 생각보다 할만합니다.

위로 올라가면 커지고 내려가면 작아집니다.

유니티 2D 이펙트 - yuniti 2D ipegteu
유니티 2D 이펙트 - yuniti 2D ipegteu

하단에는 기본으로 주어지는 그래프 값이 있습니다.

좌측에는 최대값을 수정할 수 있게 만들어두었고

시간값은 파티클의 생존 시간을 기준으로 1.0 이 최대입니다.

먼지는 처음에는 작게 피어올랐다가 점점 커지고 다시 작아지는 특징이 있기에 이런 요상한 그래프를 만들었습니다.

선을 두번 클릭하면 점이 생기고 수정이 가능하니 한번 자유롭게 해보시길 바랍니다.

다음은 파티클 이펙트의 회전을 담당하는 항목입니다.

모두 동일한 각도로 돌아가면 재미 없으니 랜덤 비트윈으로 바꿔 주었습니다.

이제 30~180도 사이에서 랜덤하게 돌아갈겁니다.

원한다면 위의 커브처럼 쓸 수도 있습니다.

유니티 2D 이펙트 - yuniti 2D ipegteu

이제 잘라둔 리소스를 넣을 순간입니다.

유니티 2D 이펙트 - yuniti 2D ipegteu

이곳에서 출력될 이미지들을 할당할 수 있습니다.

Mode를 Sprite로 바꾸고 리소스를 넣어줍니다.

애니메이션 출력이기에 할당된 이미지들은 파티클에 출력되며 위에서부터 순서대로 출력됩니다.

Time Mode를 FPS로 바꾸면 출력 시간을 조정할 수 있습니다.

마지막으로 랜더러 항목입니다.

라고 했지만 지금 수준에서는 딱히 건드릴게 없습니다.

솔팅 레이어를 쓰고 있다면 알맞게 지정해서 카메라에 나올 수 있게 해 주시면 됩니다.

유니티 2D 이펙트 - yuniti 2D ipegteu

이 모든 과정이 끝난 결과물입니다.

-당연히 프로그래밍은 별도입니다.-

유니티 2D 이펙트 - yuniti 2D ipegteu

착지 먼지도 이와 같이 만들어집니다.

다만 하단 항목에서 이쁜 커브값 조절이 필요합니다.

유니티 2D 이펙트 - yuniti 2D ipegteu

어색하지만 결과입니다. 좀 더 조정이 필요하겠네요.

유니티 2D 이펙트 - yuniti 2D ipegteu