Atenção! Este tutorial foi originalmente criado pelo usuário The Games Never Finish...! HenriqueBr somente está repassando-o para cá, mas não é o seu criador!
Na versão profissional do Game Maker, dentre os vários benefícios, existem o das partículas. Com as partículas, podemos criar um simples ponto na tela até furacões, queimadas e tempestades. Lógico que isso dá um pouquinho de trabalho, mas como sempre se começa do início, não vamos colocar a carroça na frente dos bois. Muita gente acha díficil criar efeitos avançados de partículas, mas tudo é questão de interpretação dos códigos. Esse tutorial pode ser um pouco grande, mas vale a pena ler, é muito interessante aprender sobre as partículas XD.
Inicialmente, precisamos criar um
sistema. O sistema de partículas é o principal de tudo, pois ele irá ser o ponto de partida de tudo o que vai ocorrer dentro dele. Como tudo vai ser definido uma só vez, coloque todos os códigos seguintes no Create. Para criar esse sistema, usamos esse código :
- Código:
part_system_create();
Mas esse sistema precisa de uma
id. O que é uma id? Id é um nome, um nick. Chamaremos o nosso sistema de
global.sys. Então, a estrutura do código fica assim:
- Código:
global.sys=part_system_create();
Já criado o sistema, precisamos criar o tipo da partícula. Dentro de um sistema, podem ter vários tipos de partículas. Para criá-lo, usamos o código
part_type_create(). Chamaremos nosso tipo de global.pt1; seguindo a mesma estrutura do sistema, o código ficará assim:
- Código:
global.pt1=part_type_create();
Tudo já está pronto para criar nosso efeito. Certos códigos se repetiram ao longo do sistema, sendo eles: ps, ind, incr e wiggle. Vou explicar cada um deles para não dar trabalho mais na frente:
Ps é a sigla de part system. É nosso mano velho, o do começo, lembra? No lugar de ps, você irá colocar a id do sistema, nesse caso, global.sys.
Ind é a indentificação do tipo da partícula do nosso sistema, no caso, global.pt1. (se os códigos forem relacionados a ela)*
Incr é uma abreviação de increase, que significa aumento, adição. É o quanto certa propriedade da partícula vai aumentar por step.
Wiggle significa deformação. É a força da deformação de certa propriedade da partícula.~
Primeiramente, definiremos a forma da partícula. O código tem essa estrutura:
- Código:
part_type_shape(ind,shape)
Em shape, colocaremos a forma que nossa partícula irá admitir. Existem várias delas, as quais estão na lista abaixo:
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
Depois, definiremos o tamanho da partícula, com esse código:
- Código:
part_type_size(ind, min_size, size_max, size_incr, size_wiggle)
Em min_size, você coloca o tamanho minimo que a partícula pode assumir. Em size_max, você coloca o tamanho máximo que a partícula pode assumir.
Definido o tamanho, criaremos a orientação da partícula. A orientação faz a partícula "rodar" ou adquirir um ângulo; portanto, é descartável. O código para usar é:
- Código:
part_type_orientation(ind,ang_min,ang_max,ang_incr,ang_wiggle,ang_relative)
Em ang_min, você coloca o ângulo mínimo que a partícula pode ter. Em ang_max, o ângulo máximo. E em ang_relative, você coloca se a partícula vai seguir o caminho das outras, em outras palavras, o efeito "furacão, galáxia".
Depois, definiremos a velocidade da partícula com esse código:
- Código:
part_type_speed(ind,speed_min,speed_max,speed_incr,speed_wiggle)
Em speed_min, você coloca a velocidade mínima que a partícula pode ter.E em speed_max, você coloca a velocidade máxima que a partícula pode ter.
Depois, você define a direção da partícula, utilizando esse código;
- Código:
part_type_direction(ind, dir_min, dir_max, dir_incr, dir_wiggle)
Vou ressaltar essa parte aqui para maior entendimento. É bem interessante. Aqui, dir_min e dir_max definem uma área limite para a partícula. Digamos que em dir_min você coloque 90 e em dir_max você coloque 270. A partícula vai ser criada somente entre esses ângulos. Para criar a partícula em todos os angulos, coloque em dir_min e em dir_max, respectivamente, 0 e 360.
Após a direção, escolheremos a(s) cor(es) da partícula. Tem como escolher até 3 cores simultâneas. Aqui abaixo vão os códigos:
Para 1 cor:
- Código:
part_type_color1(ind, color1)
Para 2 cores:
- Código:
part_type_color2(ind, color1, color2)
Para 3 cores:
- Código:
part_type_color3(ind, color1, color2, color3)
As cores apareceram na ordem do código. Por exemplo (se você estiver usando 3 cores), se em color1, você colocar verde, em color2, vermelho e em color3, azul, vai aparecer nessa ordem. O tempo de vida da partícula está diretamente ligado a isso, como veremos mais à frente.
Agora, definiremos o alpha, ou seja, a opacidade das partículas. Segue a mesma estrutura das cores:
Para 1 alpha:
- Código:
part_type_alpha1(ind, alpha1)
Para 2 alpha's:
- Código:
part_type_alpha2(ind, alpha1, alpha2)
Para 3 alpha's:
- Código:
part_type_alpha3(ind, alpha1, alpha2, alpha3)
Agora, definiremos a vida da partícula, ou seja, o tempo que ela vai existir. O código é:
- Código:
part_type_life(ind, life_min, life_max)
Em life_min, você coloca o tempo mínimo que a partícula vai existir, ou seja, se você colocar 60, a partícula não vai se destruir antes de ter completado 60 steps. E em life_max, o tempo máximo (sempre em steps).
Esse código você coloca se for do seu agrado, que é o da gravidade. Essa é a estrutura:
- Código:
part_type_gravity(ind, grav_amount, grav_dir)
Vou usar um código bem conhecido para explicar:
gravity=0.5
gravity_direction=270
O grav_amount é o gravity, e o grav_dir é o gravity_direction. Simples, não?
Terminamos nosso sistema. Alguns códigos, como o blend, step, death e make_colors eu não expliquei, pois são descartáveis e provavelmente não são usados (provavelmente).
Agora está tudo feito. O sistema está pronto! Mas... não acontece nada?! Isso porque algo tem que emitir a partícula. Para isso, existe o emissor.
Ele também tem um sistema próprio. Temos a seguir 3 passos (todos os códigos abaixo serão no evento Step).
1º Passo: Criar o sistema.
Aqui temos que criar o sistema de emissor, como criamos o sistema de partículas. O código para criar é
part_emitter_create(ps). Chamaremos o nosso sistema de
global.em. Então o nosso código fica assim:
- Código:
global.em=part_emitter_create(global.sys);
2º Passo: Cria a região de emissão.
Agora criaremos a região de emissão das partículas, ou seja, onde ela vai ser criada. Para facilitar, usaremos os códigos do mouse. O código é:
- Código:
part_emitter_region(ps,ind,xmin,xmax,ymin,ymax,shape,distribution)
Em xmin, xmax, ymin e ymax, definimos as posições em que as partículas serão criadas. Se você quer criar no mouse, use, respectivo à ordem anterior, mouse_x,mouse_x,mouse_y,mouse_y. Em shape, definimos a forma da região de emissão. Existem 4 formas, que são essas:
ps_shape_rectangle
ps_shape_ellipse
ps_shape_diamond
ps_shape_line
E em distribuition, definimos como será a distribuição das partículas na região. Existem três tipos:
ps_distr_linear: Usando esse, a distribuição é igual em toda a região.
ps_distr_gaussian: Aqui a distribuição é em Gaussian, ou seja, é criado no centro para os lados.
ps_distr_invgaussian: Aqui a distribuição é ao contrário, ou seja, dos lados para o centro.
3º Passo: Criar o emissor
Agora é só criar o código que emite as partículas. O código é
part_emitter_burst. Ele tem essa estrutura:
- Código:
part_emitter_burst(ps,ind,parttype,number)
Em
parttype você coloca o id da partícula, e em
number, a quantidade de partículas que serão criadas por step.
Pronto! Agora você pode criar seus efeitos sem mais dúvidas quanto aos códigos. Quem sabe, o próximo tutorial será sobre os atratores, as regiões que atraem as partículas.
Comenta ae, mano, demorou um bocado pra digitar tudo isso =P.
FLWS!
Este tutorial tem a permissão do usuário The Games Never Finish... para ter sua reprodução nesse fórum!