[Tutorial]Partículas

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Qualidade [Tutorial]Partículas

Mensagem por Mr. Kaleb em Dom 10 Jul 2011, 23:38

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!


Última edição por The Games Never Finish... em Seg 11 Jul 2011, 10:36, editado 2 vez(es)

Mr. Kaleb

Ranking : Nota C
Número de Mensagens : 1400
Idade : 19
Data de inscrição : 07/09/2010
Notas recebidas : C
Reputação : 21
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Partículas

Mensagem por JV Justino em Dom 10 Jul 2011, 23:57

WoW, seu tutorial está Ótimo! Com certeza será aprovado!

Há muito tempo que eu estava procurando um tutorial sobre partículas, e não achei nada. Muito obrigado pelo tutorial, e continue contribuindo para o fórum!

flw

JV Justino

Ranking : Nota A
Número de Mensagens : 619
Idade : 19
Data de inscrição : 07/12/2010
Notas recebidas : A+A
Reputação : 20
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Partículas

Mensagem por Mr. Kaleb em Seg 11 Jul 2011, 00:03

Valeu cara, pensei que por ser grande, ninguém iria comentar =P, vi que me enganei, valeu, e que bom que gostou, explorei todo esse universo da partículas e provavelmente vou colocar mais tutoriais.
FLWS!

Mr. Kaleb

Ranking : Nota C
Número de Mensagens : 1400
Idade : 19
Data de inscrição : 07/09/2010
Notas recebidas : C
Reputação : 21
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Partículas

Mensagem por Hatzo enkiri em Seg 11 Jul 2011, 07:15

Desde q usava o multimedia fusion eu tentava aprender sobre partículas. Agora vc vem com esse tuto fenomenal. Com toda a certeza será aprovado e merece até um premio de qualidade 100%. PARABÉNS e continue a fazer ótimos tutos.

Hatzo enkiri

Ranking : Nota B
Número de Mensagens : 226
Idade : 22
Data de inscrição : 19/02/2009
Notas recebidas : B
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Partículas

Mensagem por Mr. Kaleb em Seg 11 Jul 2011, 07:58

Valeu hatzo! Espero que todos aprendam com ele e com certeza, eu continuarei postando mais tutoriais.
FLWS!

Mr. Kaleb

Ranking : Nota C
Número de Mensagens : 1400
Idade : 19
Data de inscrição : 07/09/2010
Notas recebidas : C
Reputação : 21
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Partículas

Mensagem por ricaun em Seg 11 Jul 2011, 09:55

Muito bom seu tutorial, bem explicado... Muita coisa eu já sabia mas o que eu não sabia era para servia o parametro wiggle, cria um efeito muito legal quando usar...

Great!

ricaun

Número de Mensagens : 169
Idade : 27
Data de inscrição : 23/09/2008
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Partículas

Mensagem por Mr. Kaleb em Seg 11 Jul 2011, 10:04

Valeu riacaun, esse wiggle é muito bom mesmo, se você colocar 1 no wiggle do part_type_size, ele fica crescendo e descrescendo bem rápido, é muito legal mesmo.

Mr. Kaleb

Ranking : Nota C
Número de Mensagens : 1400
Idade : 19
Data de inscrição : 07/09/2010
Notas recebidas : C
Reputação : 21
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Partículas

Mensagem por Conteúdo patrocinado Hoje à(s) 18:15


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum