GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


[Tutorial]Partículas

4 participantes

Ir para baixo

[Tutorial]Partículas Empty [Tutorial]Partículas

Mensagem por Mr. Kaleb 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
Mr. Kaleb

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 07/09/2010
Reputação : 21
Número de Mensagens : 1400
Prêmios : [Tutorial]Partículas Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]Partículas Empty Re: [Tutorial]Partículas

Mensagem por JV Justino 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
JV Justino

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios : [Tutorial]Partículas Empty

Medalhas x 0 Tutoriais x 13 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]Partículas Empty Re: [Tutorial]Partículas

Mensagem por Mr. Kaleb 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
Mr. Kaleb

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 07/09/2010
Reputação : 21
Número de Mensagens : 1400
Prêmios : [Tutorial]Partículas Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]Partículas Empty Re: [Tutorial]Partículas

Mensagem por Hatzo enkiri 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.
avatar
Hatzo enkiri

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 19/02/2009
Reputação : 7
Número de Mensagens : 226
Prêmios : [Tutorial]Partículas Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]Partículas Empty Re: [Tutorial]Partículas

Mensagem por Mr. Kaleb 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
Mr. Kaleb

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 07/09/2010
Reputação : 21
Número de Mensagens : 1400
Prêmios : [Tutorial]Partículas Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]Partículas Empty Re: [Tutorial]Partículas

Mensagem por ricaun 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
ricaun

Data de inscrição : 23/09/2008
Reputação : 9
Número de Mensagens : 169
Prêmios : [Tutorial]Partículas Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]Partículas Empty Re: [Tutorial]Partículas

Mensagem por Mr. Kaleb 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
Mr. Kaleb

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 07/09/2010
Reputação : 21
Número de Mensagens : 1400
Prêmios : [Tutorial]Partículas Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]Partículas Empty Re: [Tutorial]Partículas

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos