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

[게임메이커강좌-파티클]파티클 타입

by 타락카얀 2014. 1. 27.
728x90



GAME MAKER 강좌



KAYAN




이번 강좌에서는 파티클의 핵심인 파티클 타입에 대해 알아보도록 합시다.



(▲ 입자를 구성하는 파티클 타입)







◈파티클 타입



파티클 타입은 아래와 같이 파티클을 구성하는 입자를 나타냅니다.



(▲ 파티클 구성)


먼저 생성에 관련된 함수부터 알아보도록 합시다.



     part_type_create() : 파티클 타입을 생성합니다.


     part_type_destroy(ind) : ind 파티클 타입을 파기하고, 메모리의 공간을 확보합니다.
     part_type_exists(ind) : ind 파티클 타입이 있는지 체크합니다.
     part_type_clear(ind) : ind 파티클 타입을 클리어 합니다.



파티클 타입을 생성할 때는 part_type_create()를 사용하여 변수에 할당하게 됩니다.
예를 들면,



     partcle0=part_type_create();



이런 식으로 생성할 수 있지요.
그러면 파티클 타입의 ID를 할당한 particle0 변수로 파티클 속성을 설정(ind 인자에 들어감)할 수 있는

것입니다.







◈파티클 모양



다음은 파티클의 기본 모양에 대해 알아봅시다.



     part_type_shape(ind,shape) : ind 파티클 타입의 모양(shape)을 지정합니다.



shape 에 지정할 수 있는 기본 모양은 다음과 같습니다.



     pt_shape_pixel
     pt_shape_disk
     pt_shape_square
     pt_shape_line
     pt_shape_star
     pt_shape_circle
     pt_shape_ring
     pt_shape_sphere
     pt_shape_flare
     pt_shape_spark
     pt_shape_explosion
     pt_shape_cloud
     pt_shape_smoke
     pt_shape_snow



어떠한 모양인지 감이 안 오시죠?

아래는 이 기본 모양의 1:1비율의 모습입니다.



(▲파티클의 모양)


어디선가 본 모습일 겁니다.

이것은 Draw탭otherCreate Effect 액션의 기본 이펙트로도 있는 모양이지요.

파티클에서도 이 모양을 기본 모양으로 사용합니다.


기본 모양이 맘에 들지 않는다면 직접 제작한 스프라이트 이미지로 파티클의 모양에 적용할 수도

있습니다.



     part_type_sprite(ind,sprite,animat,stretch,random)



     sprite : 파티클 이미지로 사용할 스프라이트.
     animat : 애니메이션으로 재생 할것인지 지정. 1 재생, 0 안함.
     strech : 파티클의 수명을 애니메이션으로 할 것인지 지정.
     random : 서브이미지를 랜덤으로 정할것 인지 지정. 1 랜덤, 0 안함


이 함수는 파티클의 모양을 스프라이트 이미지로 표시하는 것입니다.

스프라이트 애니메이션을 재생할 수도 있으며, 애니메이션 수만큼 수명을 지정할 수도 있습니다.


다음과 같은 함수를 사용하면 파티클의 크기를 조절할수 있습니다.



     part_type_size(ind,size_min,size_max,size_incr,size_wiggle)



     size_min : 최소 크기를 지정
     size_max : 최대 크기를 지정
     size_incr : 크기 증감을 지정
     size_wiggle : 흔들 거림을 지정함

여기서 size_minsize_max의 범위를 지정하면 그 범위 내에서 크기가 랜덤으로 정해지게 됩니다.

size_incr는 소멸할 때까지의 크기(기본값은 1)를 점점 확대 또는 축소 시킬 수 있는 스케일링값을

지정하면 됩니다. size_wiggle은 크기가 줄어들었다 늘어났다 하는 흔들 거림을 지정합니다.

흔들거리지 않게 하려면 0값을 지정하세요.

파티클의 크기를 확대 또는 축소 시킬수도 있습니니다.



     part_type_scale(ind,xscale,yscale)



     xscale : x축 확대/축소치. 기본값은 1
     yscale : y축 확대/축소치. 기본값은 1

다음과 같은 함수를 사용하면 파티클이 회전하도록 설정할 수 있습니다.



     part_type_orientation(ind,ang_min,ang_max,ang_incr,ang_wiggle,ang_relative)



     ang_min : 회전 시작 각도 최소 랜덤 범위

     ang_max : 회전 시작 각도 최대 랜덤 범위
     ang_incr : 회전 속도
     ang_wiggle : 회전시 흔들거림을 지정
     ang_relative : 종속된 각도에서 시작할지 지정. 1 또는 0.

이것은 파티클이 생생될때 ang_min ~ ang_max 범위내에 랜덤의 각도로 회전한 후, 소멸 할 때까지

ang_incr 값의 속도로 추가 회전하게 됩니다. ang_relative 는 파티클의 현재 이동 방향을

파티클 이미지 회전에 적용할것인지 지정합니다.





◈파티클의 색 혼합



다음과 같은 함수를 사용하면 파티클에 색을 지정하거나 혼합시킬 수 있습니다.
색의 기본값으로 c_white(흰색)를 사용합니다.


 

     part_type_color1(ind,color1)



color1에는 파티클의 색을 지정합니다.

그리고 파티클이 소멸할 때까지의 분기별로 색을 지정하여 서서히 변하게 할 수도 있습니다.



     part_type_color2(ind,color1,color2)



     color1 : 파티클이 생성되었을 때의 색
     color2 : 파티클이 소멸되기 전의 색

이것은 소멸하기 전에 color1 ~ color2 색이 서서히 혼합되어 표시되게 하는 것입니다.


마찬가지로 소멸하기전에 3개의 분기별로 색을 혼합시킬 수 있습니다.



     part_type_color3(ind,color1,color2,color3)



     color1 : 파티클이 생성되었을 때의 색
     color2 : 중간 분기의 색
     color3 : 파티클이 소멸되기 전의 색


이것은 파티클이 소멸할 때까지 3가지 색으로 서서히 변하게 할 때 사용합니다.


그 외에 두 색을 혼합하거나 rgb 색과 hsv 색을 랜덤으로 혼합시킬 수 있습니다.



     part_type_color_mix(ind,color1,color2) : 2색을 혼합


     part_type_color_rgb(ind,rmin,rmax,gmin,gmax,bmin,bmax) : rgb 계열의 색을 랜덤 혼합
     part_type_color_hsv(ind,hmin,hmax,smin,smax,vmin,vmax) : hsv 계열의 색을 랜덤 혼합


     part_type_blend(ind,additive) : 파티클에 가산혼합을 할것인지 지정. 0 또는 1.



다음과 같은 함수를 사용하면 파티클이 소멸할때까지의 투명도 변화를 지정할 수 있습니다.



     part_type_alpha1(ind,alpha1) : 투명도 설정
     part_type_alpha2(ind,alpha1,alpha2) : alpha1 ~ alpha2 로의 변화시킬 투명도 설정
     part_type_alpha3(ind,alpha1,alpha2,alpha3) : alpha1 ~ alpha3 으로의 변화시킬 투명도 설정



part_type_alpha1 는 소멸할 때까지의 일정하게 알파값을 유지 시키고, part_type_alpha2

생성했을 때(alpha1) 알파값부터 소멸하기 전(alpha2)의 알파값으로 서서히 변화시키게 합니다.

part_type_alpha3 은 생성되었을 때(alpha1), 소멸하기 전(alpha3), 그리고 중간 과정(alpha2)이 추가된

3가지의 알파값으로 변화시키게 합니다.





◈ 파티클의 수명과 소멸



파티클을 생성했을 때 소멸할 때까지의 수명을 가집니다.
이것은 룸에 파티클의 수명시간에 따라 게임에 지대한 영향을 미치기 때문에 매우 중요한 부분이라 할 수

있습니다. 수명이 긴 파티클은 게임 상에 누적될 때 마다 연산처리가 필요하므로 수명 시간을 적당하게

설정해야합니다.



     part_type_life(ind,life_min,life_max) : 파티클이 소멸되기까지의 수명을 지정



     life_min : 최소 수명값
     life_max : 최대 수명값

이것은 life_min ~ life_max 사이의 랜덤 값으로 파티클의 수명이 설정됩니다.


그리고 파티클이 소멸할때까지 다른 파티클을 반복적으로 생성시킬 수도 있습니다.



     part_type_step(ind,step_number,step_type)



     step_number : 스텝당 파티클을 얼마만큼 생성시킬지 지정
     step_type : 생성시킬 파티클 타입


이 함수는 스텝마다 지정한 파티클을 지정한 수만큼 생성시킵니다.

스텝마다 파티클을 계속 생성하기 때문에 너무 많은 수를 생성시키면 게임이 멈추거나 느려질 수

있으므로 이 함수를 사용할 때는 주의해야합니다.


다음과 같은 함수를 사용하면 파티클이 소멸될때 다른 파티클을 생성시킬 수 있습니다.



     part_type_death(ind,death_number,death_type)



     death_number : 파티클 생성 수
     death_type : 생성시킬 파티클 타입


이 함수는 파티클이 소멸되었을 때 또 다른 타입의 파티클을 생성할 때 사용합니다.
이와 같은 기능은 주로 연쇄 폭발하는 폭죽같이 불꽃 효과에 쓰이기도 합니다.






◈ 파티클의 모션



파티클을 이동시키거나 중력을 적용할 수도 있습니다.


 

     part_type_speed(ind,speed_min,speed_max,speed_incr,speed_wiggle)



     speed_min : 파티클 생성시 적용할 최소 속도
     speed_max : 파티클 생성시 적용할 최대 속도
     speed_incr : 파티클의 이동할때 속도의 증감치
     speed_wiggle : 파티클이 이동할때 흔들 거림을 지정함. 0은 흔들거리지 않음.

이것은 파티클이 생성될때 speed_min ~ speed_max 사이의 랜덤 속도를 가지고 이동하게 합니다.

이동하는 와중에 speed_incr 값의 속도를 더해 속도를 증감시킬 수 있고, speed_wiggle값만큼

흔들거리게 만들 수도 있습니다.

다음과 같은 함수를 사용하면 파티클의 이동 방향을 지정할 수 있습니다.



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



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

마찬가지로 dir_min ~ dir_max 사이의 랜덤 방향을 파티클에 적용할 수 있습니다.


그리고 파티클에 중력을 적용할 수도 있습니다.



     part_type_gravity(ind,grav_amount,grav_dir)



     grav_amount : 중력치
     grav_dir : 중력 방향

이것은 중력방향을 지정하고, 그 방향으로 파티클이 중력에 이끌려 이동하게 만들 때 사용합니다.


이번 강좌에서는 파티클 타입의 속성 대해 알아보았습니다.
하지만 이것만 가지고 파티클을 생성할 수는 없습니다.
총알이 있다면 총알을 발사시키기 위한 도구가 있어야 겠지요.
다음 강좌에서는 이 파티클을 생성시키기 위한 파티클 시스템에 대해 알아보도록 합시다.








300x250

댓글