GAME MAKER 강좌
KAYAN
이번 강좌에서는 모든 파티클을 생성하고, 제어할 수 있는 파티클 시스템에 대해 알아보도록 합시다.
◈ 파티클 시스템
파티클은 파티클 시스템을 통해서만 생성합니다.
뿐만아니라 파티클 시스템은 파티클을 생성하는 모든 시스템들을 총괄해 제어하며,
여기에는 파티클 타입, 파티클 이미터, 파티클 어트랙터, 파티클 디플렉터, 파티클 디스트로이어,
파티클 체인저가 포함됩니다.
(▲ 파티클 구성)
파티클 시스템을 통해 파티클을 모두 파기 할 수 있고, 또한 생성되는 파티클의 위치를
변경시킬 수도 있으며, 파티클 설정을 초기화 시킬 수도 있습니다.
파티클 시스템을 생성하는 것은 아래와 같은 함수로 사용합니다.
part_system_create() : 파티클 시스템을 생성. |
파티클을 생성할 때는 이 함수를 사용하여 파티클 시스템을 생성합니다.
특정 상황에서 파티클 시스템을 초기화 시키거나, 파기시켜야 할때가 있습니다.
예를 들면 다른 룸으로 이동할때 파티클 시스템을 파기하거나 초기화하지 않는 한, 메모리에 저장되어
계속 활동하기 때문에 룸을 이동해도 계속 파티클이 생성되는 경우가 발생합니다.
이를 방지하기 위해서는 필요 없어진 파티클 시스템은 다음과 같은 함수로 초기화 시키거나 파기 해야합니다.
part_system_clear(ind) : 파티클 시스템를 통해 생성된 모든 파티클을 클리어하고, |
이 함수를 사용 후엔 파티클 시스템에 속하는 파티클은 물론, 파티클 이미터도 파기되므로
파티클 이미터를 사용하려면 다시 생성해야합니다.
파티클 시스템이 룸 상에 존재하는지 확인 하는 함수가 있습니다.
part_system_exists(ind) : 파티클 시스템이 룸에 있는지를 체크함. |
또한 파티클을 표시할때 깊이를 변경할 수 있습니다.
part_system_draw_order(ind,oldtonew) |
이 함수는 파티클이 생성될때 먼저 생성된 파티클 위에 생성되도록 할 수 있는 기능입니다.
1일 경우 먼저 생성된 파티클 위에 생성되며, 0일 경우 반대로 먼저 생성된 파티클보다 후위에
생성됩니다.
보통 파티클이 생성될때 현재 오브젝트의 깊이에 따르는데, 이 함수를 사용하면 파티클이 생성되는
깊이를 따로 지정(오브젝트의 depth처럼)할 수 있습니다.
part_system_depth(ind,depth) |
이것을 사용하면 현재 오브젝트나, 다른 오브젝트들 보다 다른 깊이에 생성되도록 설정하고자 할때 사용합니다.
파티클 시스템의 위치를 변경할 수도 있습니다.
part_system_position(ind,x,y) : 파티클 시스템의 위치를 설정 |
이 함수는 파티클 시스템의 위치를 변경하는 것으로, 생성되는 파티클의 위치에도 영향을 주게 됩니다.
파티클 시스템을 위치나 파티클이 생성되는 것을 자동적으로 업데이트 시킬것인지 설정할 수도
있습니다.
part_system_automatic_update(ind,automatic) |
기본적으로 파티클 생성 및 위치는 자동으로 업데이트 하기 때문에 수동으로 업데이트 하고 싶을 때
사용합니다.
만약 수동으로 변경했다면 다음과 같은 함수를 통해 업데이트 해야 합니다.
part_system_update(ind) : 자동 업데이트가 아닌 경우 업데이트 호출. |
파티클을 자동으로 화면에 표시할 것인지 지정할 수도 있습니다.
part_system_automatic_draw(ind,automatic) |
automatic을 0 으로 설정하면, 생성되는 파티클을 화면에 아무것도 표시하지 않게 됩니다.
일반적으로 자동으로 화면에 표시되는데, 특정 이벤트에서만 표시되도록 하고자 할때 이 기능을
이용하여 파티클을 표시하지 않게 합니다.
그리고 이 함수로 파티클을 표시하지 않게 한 후, Draw 이벤트에서 파티클들을 표시하고자 할 때는
다음과 같은 함수를 사용합니다.
part_system_drawit(ind) : 파티클을 화면에 표시함. |
이 함수는 Draw 이벤트에서 파티클을 표시할 수 있도록 하는 함수입니다.
part_system_automatic_draw 함수로 화면에 자동으로 표시하지 않도록 변경 했을 때 사용합니다.
◈ 파티클 생성
파티클을 생성할 때 역시 파티클 시스템을 사용합니다.
part_particles_create(ind,x,y,parttype,number) |
이 함수는 룸에 지정한 수 만큼의 파티클을 생성할 수 있게 합니다.
파티클을 생성할 때 색을 지정하여 생성할 수 있습니다.
part_particles_create_color(ind,x,y,parttype,color,number) |
이 함수는 파티클을 생성할 때 색을 지정하여 생성할 수 있는데, part_type_color2, 또는
part_type_color3 으로 파티클 타입에 색을 지정하지 않았을 때, 생성되는 파티클의 색에 반영됩니다.
생성되는 수(number)를 음수로 설정하면 지정한 값내에 랜덤 수만큼 파티클을 생성하게 됩니다.
화면에 생성된 파티클을 모두 클리어할때 다음과 같은 함수를 사용합니다.
part_particles_clear(ind) : 화면에 생성된 모든 파티클을 파기함. |
이 함수를 사용하면 파티클 시스템을 통해 생성된 파티클을 모두 파기하게 됩니다.
참고로 part_system_clear 함수는 파티클 시스템에 속한 모든 파티클과 파티클 이미터를 파기 시키고
파티클 시스템을 초기화하지만, 이 함수는 생성된 파티클만 제거하게 됩니다.
그리고 파티클의 수를 확인할 수 있는 함수가 있습니다.
part_particles_count(ind) : 파티클 시스템을 통해 룸에 생성된 파티클의 수를 반환 |
이 함수를 사용하면 룸에 파티클 시스템을 통해 생성된 파티클이 얼마나 있는지 확인할 수 있습니다.
디버그시 파티클 수를 체크하여 최적화할 때 유용한 함수 입니다.
(▲ 파티클은 파티클 시스템을 통해 생성)
파티클은 파티클 시스템으로 생성할 수 있지만, 파티클 이미터를 사용하면 물 흐르듯이 여러개의
파티클을 방출 시킬 수 있습니다.
다음 강좌에서는 파티클을 방출시키는 파티클 이미터에 대해 알아보도록 합시다.
'GameMaker강좌[GM8] > 파티클강좌' 카테고리의 다른 글
[게임메이커강좌-파티클]파티클 응용편2 (0) | 2014.02.09 |
---|---|
[게임메이커강좌-파티클]파티클 응용편1 (0) | 2014.02.09 |
[게임메이커강좌-파티클]파티클 이미터 (2) | 2014.01.29 |
[게임메이커강좌-파티클]파티클 타입 (6) | 2014.01.27 |
[게임메이커강좌-파티클]파티클에 대하여 (1) | 2014.01.26 |
댓글