GAME MAKER 강좌
KAYAN
이번 강좌에서는 파티클을 방출하는 파티클 이미터에 대해 알아보도록 합시다.
(▲ 파티클 이미터를 이용한 파티클 생성)
◈파티클 이미터
파티클 이미터를 사용하려면 먼저 파티클 시스템과 파티클 타입이 만들어져 있어야 합니다.
그리고 다음과 같은 함수로 파티클 이미터를 만듭니다.
part_emitter_create(ps) |
ps : 종속 시킬 파티클 시스템을 지정
ps에는 이미 만들어진 파티클 시스템을 지정해야합니다.
만약 part_system_clear으로 파티클 시스템을 초기화 하거나, part_system_destroy 로 파기 한다면
파티클뿐만 아니라, 파티클 이미터도 자동 파기됩니다.
참고로 part_particles_clear는 생성된 파티클만 제거하며, 파티클 이미터는 그대로 유지합니다.
필요 없어진 파티클을 다음과 같은 함수로 파기할 수 있습니다.
part_emitter_destroy(ps,ind) : 파티클 이미터를 파기합니다. |
ps : 종속된 파티클 시스템을 지정
ind : 파기할 파티클 이미터를 지정
이 함수는 해당 파티클 이미터를 파기하게 됩니다. 하지만 파티클은 제거되지 않습니다.
만약 종속된 파티클 시스템에 있는 모든 파티클 이미터를 파기하고자 한다면 다음과 같은 함수를
사용하세요.
part_emitter_destroy_all(ps) : 파티클 시스템에 종속된 모든 파티클 이미터를 파기합니다. |
이 함수를 사용하면 파티클 이미터를 메모리에서 완전히 파기하는 것이므로, 다시 파티클 이미터를
사용하려면 part_emitter_create로 새로 만들어야 합니다.
파티클 이미터를 초기화 할 수도 있습니다.
part_emitter_clear(ps,ind) : 지정한 파티클 이미터의 설정들을 초기화 |
ps : 종속된 파티클 시스템을 지정
ind : 파기할 파티클 이미터를 지정
이것은 파티클 이미터에서 설정한 것들만 초기화 하는 것으로, 생성된 파티클은 그대로 유지하게
됩니다. 또한 해당 파티클 이미터가 메모리에서 완전히 파기되는 것은 아닙니다.
파티클 이미터가 게임 상에서 존재하는지 확인할 수도 있습니다.
part_emitter_exists(ps,ind) |
파티클 이미터가 어떠한 이유로 파기되거나 만들어 지지 않았을 때 파티클 이미터 함수를 사용하게
되면, 오류가 생기므로, 파티클 이미터가 만들어졌는지 미리 확인하고자 할 때 사용합니다.
예들 들면 파티클 이미터가 파기 되었는지, 아니면 게임 상에 만들어져 있는지 확인하여
파기되었을 때는 part_emitter_create를 사용하여 새로 만들어 파티클을 다시 방출시킬 때
사용하지요.
그리고 파티클을 생성할 때 생성 범위와 생성되는 분포형태를 지정할 수도 있습니다.
part_emitter_region(ps,ind,xmin,xmax,ymin,ymax,shape,distribution) |
xmin, xmax, ymin, ymax : 생성한 파티클의 확장 범위를 지정합니다.
shape : 범위의 모양을 지정
distribution : 파티클 생성에 사용할 분포를 지정:
shape 모양은 다음과 같습니다.
ps_shape_rectangle : 사각형 모양
ps_shape_ellipse : 타원형 모양
ps_shape_diamond : 다이아몬드 모양
ps_shape_line : 선형 모양
shape 는 파티클이 생성되는 범위의 모양을 지정하는 것입니다. 파티클은 이 모양내에 파티클을 생성하게 됩니다.
또한 그 범위내에서 다시 파티클이 생성될때 가운데를 집중적으로 생성되게 할지, 또는 측면에 집중적으로
생성시킬지 분포 형태를 지정할 수 있습니다.
distribution 는 파티클 생성시 분포형태를 지정하게 됩니다.
ps_distr_linear : 범위 내에 모든 곳의 동일한 분포로 파티클을 생성
ps_distr_gaussian : 범위 내에 중심부를 중점으로 파티클을 생성
ps_distr_invgaussian : 범위 측면 위주의 분포로 파티클을 생성
이것은 다음과 같은 분포 형태를 가지고 있습니다.
(▲ distribution - ps_distr_linear)
ps_distr_linear는 위와 같이 파티클을 범위 모양내에서 골고루 생성하게 합니다.
(▲ distribution - ps_distr_gaussian)
ps_distr_gaussian 는 파티클을 범위 모양의 중심부에 집중적으로 생성시킵니다.
(▲ distribution - ps_distr_invgaussian)
ps_distr_invgaussian 는 파티클을 범위 모양에서 측면부를 중심으로 생성시키는 것입니다.
드디어 파티클을 생성하는 부분이 남았군요.
파티클 이미터로 파티클 생성시키는 함수는 burst 와 stream 함수가 있습니다.
part_emitter_burst(ps,ind,parttype,number) : 파티클을 지정한 수만큼 방출시킴(1회) |
ps : 종속된 파티클 시스템 지정
ind : 사용할 파티클 이미터 지정
parttype : 생성시킬 파티클 타입을 지정
number : 생성 수
burst 와 stream 는 둘다 파티클을 방출 시키지만 차이점이 있습니다.
burst 는 스텝당 한번만 지정한 수만큼 방출 시키게 됩니다. 이것은 Create 이벤트에 배치했을 경우
1번만 파티클을 생성시킵니다.
즉, 여러번 파티클을 생성하려면 Step 이벤트와 같이 매 스텝마다 실행되는 이벤트에 배치하는 것이
적합합니다.
반면 stream 은 한번만 실행해도 되며, 파티클 시스템 또는 파티클 이미터를 파기하거나,
초기화하지 않는한 파티클을 지속적으로 방출하게 됩니다.
생성되는 수(number)를 음수로 설정하면 지정한 값내에 랜덤 수만큼 파티클을 생성하게 됩니다.
어떤 방식을 사용하든 여러분의 게임에 맞게 사용하시면 됩니다.
여기까지 주요 파티클에 대한 주요 함수들에 대해 알아보았습니다.
다음 강좌에서는 지금까지 알아본 함수를 이용하여 파티클 응용을 간단하게 해봅시다.
'GameMaker강좌[GM8] > 파티클강좌' 카테고리의 다른 글
[게임메이커강좌-파티클]파티클 응용편2 (0) | 2014.02.09 |
---|---|
[게임메이커강좌-파티클]파티클 응용편1 (0) | 2014.02.09 |
[게임메이커강좌-파티클]파티클 시스템 (0) | 2014.01.28 |
[게임메이커강좌-파티클]파티클 타입 (6) | 2014.01.27 |
[게임메이커강좌-파티클]파티클에 대하여 (1) | 2014.01.26 |
댓글