입자 유형
입자는 게임에서 입자 시스템을 사용하여 생성할 수 있는 그래픽 효과입니다. 이러한 함수로 정의한 입자는 생성한 모든 시스템에서 사용할 수 있으며, 일반적인 절차는 게임 시작 시 모든 입자를 한 번 정의하고 그 인덱스 값을 전역 변수에 저장하는 것입니다. 이러한 전역 변수는 게임 전반에 걸쳐 언제든지 입자를 폭발시키거나 방출하거나 생성하는 데 사용할 수 있습니다. 메모리 문제가 있거나 특정 지점에서만 다양한 유형의 입자를 원할 경우, 필요에 따라 입자를 생성하고 사용한 후 파괴할 수도 있습니다. 어떤 선택을 하든 입자는 매우 다재다능한 자원입니다!
입자 유형은 방출기와 달리 입자 시스템에 묶여 있지 않으므로, 입자 유형을 사용하는 시스템을 파괴해도 해당 유형은 파괴되지 않습니다. 일부 입자 속성에는 _incr 및 _wiggle 매개변수가 있으며, 이를 변경하면 주어진 입자 유형의 기존 입자에 영향을 미칩니다. 이는 입자 시스템 내에서 기존 입자에 영향을 미치는 제한된 방법을 제공합니다.
입자는 입자 유형에서 생성되며, 입자 유형을 생성하고 그 인덱스를 변수에 저장해야 모든 후속 입자 루틴이 이를 올바르게 접근할 수 있습니다. 다음 함수는 입자 유형을 생성, 확인, 지우고 파괴하는 데 사용됩니다:
함수 이름 | 설명 |
---|---|
part_type_exists | 입자 유형이 존재하는지 확인 |
part_type_create | 새로운 입자 유형 생성 |
part_type_destroy | 입자 유형 파괴 |
part_type_clear | 입자 유형 초기화 |
입자 유형을 생성한 후에는 모양을 지정해야 합니다. 이는 64x64 픽셀 스프라이트로 알파 블렌딩이 적용된 14개의 기본 모양 중 하나일 수 있으며, 애니메이션, 정적, 무작위 하위 이미지 또는 특정 하위 이미지를 사용할 수도 있습니다. 다음 함수는 각 입자의 시각적 기본 모양을 정의합니다:
함수 이름 | 설명 |
---|---|
part_type_shape | 입자 유형의 모양 설정 |
part_type_sprite | 입자 유형의 스프라이트 설정 |
part_type_subimage | 입자 유형의 하위 이미지 설정 |
입자 유형의 스프라이트(기본 모양 또는 사용자 정의)를 선택한 후에는 크기와 비율을 지정할 수 있습니다. 크기는 범위로 지정할 수 있으며, 모든 입자는 주어진 범위 내에서 선택된 크기로 생성됩니다. 비율은 크기 변형이 추가되기 전의 x 및 y 축 비율의 "기본" 값입니다. 다음 함수는 이러한 값을 제어하는 데 사용됩니다:
함수 이름 | 설명 |
---|---|
part_type_size | 입자 크기 설정 |
part_type_size_x | x축 크기 설정 |
part_type_size_y | y축 크기 설정 |
part_type_scale | 입자 비율 설정 |
입자는 방향성과 움직임을 가질 수 있습니다. 대부분의 입자 함수와 마찬가지로 속도, 방향 및 방향성은 주어진 범위에서 선택된 무작위 값으로 해결되며, 다음 함수로 설정할 수 있습니다:
함수 이름 | 설명 |
---|---|
part_type_speed | 입자 속도 설정 |
part_type_direction | 입자 방향 설정 |
part_type_gravity | 입자 중력 설정 |
part_type_orientation | 입자 방향성 설정 |
입자의 스타일과 움직임을 정리한 후에는 색상과 알파 값을 설정할 수 있습니다. 두 값 모두 입자의 전체 수명 동안 절대값으로 설정하거나 점진적으로 변하는 값의 비율로 설정할 수 있습니다. 입자와 주변 환경의 블렌딩을 설정할 수 있는 특별한 함수도 있으며, 이는 일반 또는 추가 블렌딩으로 설정할 수 있어 환상적인 효과를 제공합니다. 색상, 알파 및 블렌딩을 제어하는 함수는 다음과 같습니다:
함수 이름 | 설명 |
---|---|
part_type_colour_mix | 색상 혼합 설정 |
part_type_colour_rgb | RGB 색상 설정 |
part_type_colour_hsv | HSV 색상 설정 |
part_type_colour1 | 첫 번째 색상 설정 |
part_type_colour2 | 두 번째 색상 설정 |
part_type_colour3 | 세 번째 색상 설정 |
part_type_alpha1 | 첫 번째 알파 값 설정 |
part_type_alpha2 | 두 번째 알파 값 설정 |
part_type_alpha3 | 세 번째 알파 값 설정 |
part_type_blend | 블렌딩 모드 설정 |
입자는 화면에 제한된 시간 동안 존재하며, 이를 "수명"이라고 합니다. 입자 수명은 스텝으로 측정되며(이전 함수와 마찬가지로) 특정 수명을 부여받기 위해 값의 범위로 표현됩니다. 입자가 다른 입자를 생성하도록 만드는 몇 가지 흥미로운 함수도 있으며, 이는 각 스텝마다 또는 "죽을" 때(즉, 화면에서 제거될 때) 발생할 수 있습니다. 그러나 이러한 함수는 수천 개의 입자를 빠르게 생성하여 게임을 충돌시킬 수 있으므로 매우 주의해야 합니다. 수명 및 스텝 또는 죽음 발생을 설정하는 함수는 다음과 같습니다:
함수 이름 | 설명 |
---|---|
part_type_life | 입자 수명 설정 |
part_type_step | 입자 스텝 설정 |
part_type_death | 입자 사망 시 발생 설정 |
활용 예제
입자 시스템을 활용하는 다양한 예제는 다음과 같습니다:
// 입자 유형 생성
var particleType = part_type_create();
part_type_shape(particleType, pt_shape_circle);
part_type_size(particleType, 1, 3);
part_type_colour_rgb(particleType, c_red);
// 입자 방출
var particle = part_type_create();
part_type_sprite(particle, spr_particle);
part_type_life(particle, 30);
part_type_speed(particle, 2);
// 입자 색상 및 알파 설정
part_type_colour1(particleType, c_blue);
part_type_alpha1(particleType, 1);
part_type_blend(particleType, pb_additive);
// 입자 생성 및 방출
var p = part_system_create();
part_system_emitter_create(p, 0);
part_emitter_burst(p, 0, 10);
// 입자 수명 및 생성 설정
part_type_life(particleType, 50);
part_type_death(particleType, true);