Un tipo de particular define la forma, color y movimiento de una clase de partículas. Sólo necesitas definir un tipo de partícula una vez durante el juego, una vez hecho esto puede ser usado por cualquier sistema de partículas. Los tipos de partículas tienen un gran número de características que pueden ser cambiadas para alterar su apariencia o comportamiento. Con la elección adecuada puedes crear cualquier tipo de efecto.
Las funciones para crear y destruir tipos de partículas son:
part_type_create()
Crea un Nuevo tipo
de particular. Devuelve el índice del tipo. Este índice debe usarse en todas las
llamadas a las funciones siguientes para configurar las propiedades del tipo de
partícula, por lo que es aconsejable que lo guardes en una variable global.
part_type_destroy(ind)
Destruye el tipo de
particular ind. Llama a esta función cuando ya no se necesite el tipo de
partícula para ahorrar espacio.
part_type_exists(ind)
Devuelve si el tipo
indicado de particular existe.
part_type_clear(ind)
Devuelve el tipo de
particular ind a sus valores por defecto.
Las partículas tienen una forma. Esta forma se indica mediante un sprite. Puedes usar cualquier sprite que quieras para tus partículas pero debes saber que además hay 15 tipos de sprites ya definidos. Estos sprites son todos de tamaño 64x64 y poseen valores de transparencia que los hacen fundirse de manera excelente con el fondo. Estos sprites se indican con las constantes:
pt_shape_pixel (pixel)
pt_shape_disk (disco)
pt_shape_square (cuadrado)
pt_shape_line (línea)
pt_shape_star (estrella)
pt_shape_circle (círculo)
pt_shape_ring (anillo)
pt_shape_sphere (esfera)
pt_shape_flare (brillo)
pt_shape_spark (chispa)
pt_shape_explosion (explosión)
pt_shape_cloud (nube)
pt_shape_smoke (humo)
pt_shape_snow (nieve)
Para indicar la forma debes usar la función:
part_type_shape(ind,shape) Aplica la forma tipo shape a la partícula ind.
También puedes usar tu propio sprite con la función:
part_type_sprite(ind,sprite,animate,stretch,random) Asigna el sprite para el tipo de particular ind. Con la opción animate puedes indicar si el sprite debe ser animado. Con stretch indicas si la animación debe repetirse durante el tiempo de vida de la partícula. Y con random indicas si se escoge una subimagen aleatoria como la imagen inicial.
Una vez que hayas
seeccionado el sprite para el tipo de partícula puedes elegir el tamaño de éste.
Un tamaño de 1 significa el tamaño normal del sprite. Un tipo de partícula se
puede definir para que todas las partículas tengan el mismo tamaño o para que
tengan tamaños distintos. También puedes especificar un rango de tamaños, si el
tamaño debe variar durante la vida de la partícula y si puede alternarse al
crecer o disminuir, creando un efecto de tintineo.
part_type_size(ind,size_min,size_max,size_incr,size_wiggle) Establece los parámetros de tamaño para el tipo de partícula. Debes indicar el tamaño inicial, el tamaño final, la cantidad que debe crecer en cada step (usa un valor negativo para que disminuya) y el tintineo (El valor por defecto es 1 y el tamaño no cambia).
Las partículas también tienen una orientación que se indica en grados en sentido antihorario. Al igual que el tamaño, la orientación puede crecer, disminuir y puede ser la misma para todas las partículas o diferente para cada una.
part_type_orientation(ind,ang_min,ang_max,ang_incr,ang_wiggle,ang_relative) Aplica la orientación al tipo de partícula. Debes indicar la orientación inicial, final, el incremento o decremento en cada step, si la orientación tintinea y si los valores son relativos al movimiento actual (1) o absolutos (0). Por ejemplo, si ponemos todos los valores a 0 menos ang_relative, que lo ponemos a 1, la orientación de la partícula seguirá el camino que ésta describa.
Las partículas tendrán un color. Hay diferentes maneras de especificar un color para una partícula. La más simple es especificar solamente un color. Pero también puedes especificar dos ó tres colores que se interpolarán a lo largo de la vida de la partícula. Por ejemplo, una partícula puede crearse siendo blanca y poco a poco irse convirtiendo en negra. Otra posibilidad es indicar que el color de cada partícula debe ser diferente y elegido de un rango de colores especificado.
El color por defecto es blanco. Cuando usas un sprite con sus propios colores esto es lo que normalmente quieres y no necesitas especificar ninguna propiedad de color.
part_type_color1(ind,color1)
Indica un sólo color para
la partícula.
part_type_color2(ind,color1,color2)
Especifica dos colores
entre los que se interpolará.
part_type_color3(ind,color1,color2,color3)
Ahora los colores
representan el color incial, medio y final.
part_type_color_mix(ind,color1,color2)
El color será seleccionado
de una mezcla aleatoria de estos dos colores y permanecerá inalterado durante la
vida de la partícula.
part_type_color_rgb(ind,rmin,rmax,gmin,gmax,bmin,bmax)
Se puede usar para
especificar que cada partícula tendrá un color fijo pero escogido de un rango de
colores que especificas en modo rgb.
part_type_color_hsv(ind,hmin,hmax,smin,smax,vmin,vmax)
Igual que la anterior, pero
esta vez el rango se especifica en modo hsv.
Además del color, también puedes especificar un valor de transparencia. Así puedes conseguir que las partículas desaparezcan poco a poco.
part_type_alpha1(ind,alpha1)
Aplica un único valor de
transparencia (entre 0 y 1) al tipo de partícula.
part_type_alpha2(ind,alpha1,alpha2)
Igual que la anterior, pero
esta vez la transparencia en cada momento se interpola entre las dos
especificadas.
part_type_alpha3(ind,alpha1,alpha2,alpha3)
Igual que a anterior, pero
esta vez la transparencia en cada momento se interpola entre las
tres
especificadas.
Normalmente las partículas se mezclan con el fondo igual que los sprites. Pero también es posible usar additive blending, controlando así la forma en que se mezclan. Esto resulta un efecto muy bueno para explosiones.
part_type_blend(ind,additive) Indica si se debe utilizar additive blending (1) or normal blending (0) para el tipo de partícula.
Las partículas viven
durante un tiempo limitado, después, desaparecen. La vida de las partículas se
mide en steps. Puedes indicar su vida, o un rango para cada tipo de partículas.
Además, las partículas pueden crear otras partículas en cada step o cuando
mueren. Vigila que el número de partículas total no sea demasiado elevado.
part_type_life(ind,life_min,life_max)
Establece los
límites del tiempo de vida para el tipo de partícula (Ambos son 100 por
defecto).
part_type_step(ind,step_number,step_type) Establece el número y tipo de partículas que deben ser generadas en cada step para el tipo indicado de particula. Si usas un número negativo para step_number, por ejemplo -5, se generará una partícula cada 5 steps.
part_type_death(ind,death_number,death_type) Establece el número y tipo de partículas que deben ser generadas cuando una particular del tipo indicado llega al final de su ciclo de vida. Puedes usar valores negativos al igual que en la función anterior. La partícula sólo creará otras partículas al llegar al final de su vida y no cuando sea destruida por un destructor (lee más adelante).
Las partículas
se pueden mover durante su vida.
Pueden tener velocidad
inicial y dirección y cambiar durante su vida. También pueden verse afectadas
por la gravedad.
part_type_speed(ind,speed_min,speed_max,speed_incr,speed_wiggle)
Establece las propiedades de velocidad para el tipo de partícula. (Todos los
valores son 0 por defecto). Especificas un valor mínimo y máximo para la
partícula y cuando ésta sea creada se escogerá un valor aleatorio entre ellos.
Puedes especificar un valor negativo en speed_incr para hacer que la partícula
se frene (aunque nunca llegará a tener velocidad negativa).
part_type_direction(ind,dir_min,dir_max,dir_incr,dir_wiggle)
Establece las
propiedades de dirección para el tipo de partícula, en grados antihorarios
(0-360).
(Todos los
valores son 0 por defecto).
part_type_gravity(ind,grav_amount,grav_dir)
Establece las
propiedades de gravedad para el tipo de partícula. (Por defecto no hay valor de
gravedad).