본문 바로가기
GameMaker강좌[GM8]/파티클강좌

[게임메이커강좌-파티클]파티클 응용편3

by 타락카얀 2014. 2. 10.
728x90



GAME MAKER 강좌



KAYAN



이전 강좌에서 알아본 함수를 응용하여 아래와 같은 눈 모양 파티클을 만들어 봅시다.



(▲ 파티클)







◈ 파티클 응용



이번 강좌에서는 아래와 같은 눈이 내리는 형태의 파티클을 만들거에요.



(▲ 눈 파티클)


물론 이것은 오브젝트를 통해 만들 수 있습니만, 강좌에서는 파티클을 사용해 구현 할 것입니다.

눈 파티클은 아래와 같은 형식으로 생성됩니다.


(▲ 눈 파티클 생성)


보시다시피 눈이 생성되어 흔들흔들 거리며 떨어지지요.

파티클이 이동할 때 방향을 좌우로 약간씩 회전하면서 이동하기 때문에 흔들 거리며 떨어지는 것입니다.


이제 파티클을 만들어 볼까요.







파티클을 설정하는 순서는 이전 강좌의 응용편과 같습니다.
처음에 해야 할 것은 파티클을 관리할  파티클 시스템을 만드는 것이지요.
두번째는 파티클 타입의 모양과, 이동에 대해 설정을 하게 됩니다.
세번째는 파티클을 생성하기 위해 파티클 이미터를 만드는 겁니다.


먼저 파티클을 설정할 오브젝트를 하나 만듭니다.



(▲ 파티클을 설정할 오브젝트)


다음은 파티클 시스템을 만들어야 겠지요. Create 이벤트를 추가하고, 파티클 시스템을 만듭니다.



     ★ Create 이벤트

     Sname=part_system_create();



다음은 파티클 타입을 설정해야 합니다.



(▲ 파티클 종류)


강좌에서는 눈 모양으로 pt_shape_flare 를 사용하도록 하겠습니다.

Create 이벤트파티클 타입의 기본 모양 및 수명을 설정을 추가하도록 해요.



     ★ Create 이벤트

     particle1 = part_type_create();//파티클 타입 생성

     part_type_shape(particle1,pt_shape_flare);//파티클의 종류
     part_type_life(particle1,500,600);//파티클의 수명(랜덤)
     part_type_size(particle1,0.2,0.5,0,0);//파티클의 크기(랜덤)
     part_type_color1(particle1,c_white);//파티클의 색(1가지색)
     part_type_alpha2(particle1,1,0);//파티클의 투명도(변화)



파티클의 수명은 룸 아래까지 내려와야하니 떨어지는 속도와 룸 크기에 맞게 설정해야합니다.

기본 파티클의 크기는 바로 사용하기에는 크기가 조금 크기 때문에 모양은 게임 화면에 맞게 적당히

축소하여 설정하도록 해요.


이제 이동을 추가해야겠지요.
눈이 내리는 형태는 다음과 같습니다.



(▲ 파티클이 이동하는 원리)


눈 파티클은 생성되어 이동시에 방향을 약간 회전시킨후 이동합니다.
그리고 다음 이동시에 또 반대로 회전시키고 이동하지요.
이것을 계속 반복시키는 거에요.

그림을 보면 어떻게 이동하는지 알겠지만, 파티클은 어떻게 설정해야할지 난감하게 생각하실 수 있을

겁니다.
하지만, part_type_direction 함수를 사용하면 파티클의 방향을 좌우로 회전시키는 것이 가능해요.

     part_type_direction(ind,dir_min,dir_max,dir_incr,dir_wiggle)

     dir_min : 파티클 생성시 적용할 이동 방향 최소 범위
     dir_max : 파티클 생성시 적용할 이동 방향 최대 범위
     dir_incr : 방향 증감치
     dir_wiggle : 이동할때 흔들거림을 지정함

여기에서 dir_wiggle 에 값을 입력하면 지정한 값만큼 좌우로 회전시켜 흔들 거리게 할 수 있습니다.
이것을 이용하여 눈 파티클의 이동을 설정해보도록 해요.



     ★ Create 이벤트

     part_type_speed(particle1,1,2,0,0);//파티클의 속도(랜덤)
     part_type_direction(particle1,270,270,0,20);//파티클의 방향(중력 방향)
     part_type_orientation(particle1,0,0,0,0,1);//파티클 이미지 방향



이것은 파티클의 방향을 스텝마다 본래 방향인 270에서 20도씩 좌우로 회전시키면서 흔들 거리게

하는 것입니다.
그러면 이동할때 마다 좌우로 흔들거리며 떨어지는 효과를 줄 수 있는 것이지요.
간단하죠.

이제 이 파티클을 파티클 이미터를 통해 생성하는 겁니다.



     ★ Create 이벤트

     emitter1 = part_emitter_create(Sname);//파티클 이미터 생성

     part_emitter_region(Sname,emitter1,0,room_width,0,0,ps_shape_line,ps_distr_linear);//생성 범위
     part_emitter_stream(Sname,emitter1,particle1,-2);//파티클 생성

     part_system_draw_order(Sname,1);//파티클 생성시 표시 순서



파티클은 룸 상단에서 떨어져야 하니, 파티클 생성 범위의 y좌표를 0이하로 설정 하고, x 좌표는

0~룸의 가로 너비(room_width) 만큼 설정하면 됩니다. 그러면 화면 상단에서 임의의 위치에 눈이 생성

될 거에요.

     part_emitter_stream(ps,ind,parttype,number)

여기에서 생성 수(number)를 음수로 설정하면, 지정한 값 내(0~number)에 랜덤 수만큼 파티클을

생성하게 됩니다.
강좌의 설정대로 한다면, 매 스텝마다 0~2 사이의 랜덤 수만큼 파티클을 생성하게 되는 것이지요.

물론 지정한 수만큼 일정하게 많이 생성하게 하고 싶다면, 음수가 아닌 양수로 설정해주면 됩니다.

다만, 룸내에 파티클이 많이 생성되면 게임이 느려질 수 있기 때문에 그것을 감안해서 설정해야합니다.


드디어 완성되었습니다.
복잡해 보였지만, 원리는 단순했죠.
제대로 생성되는지 룸에 파티클이 설정된 오브젝트를 배치하고 테스트 해봅시다.



(▲ 테스트 화면)


여러분이라면 이를 응용해 더 멋진 파티클 이펙트를 만드실 수 있을 거라 생각합니다.





------- 예 제 -------


particle_EX3.gmk


particle_EX3.exe



300x250

댓글