Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Login

Esqueci minha senha

Últimos assuntos
» Começando com o Construct 2
por lucasrodrix Sab Maio 05, 2012 9:51 pm

» [TRFN][BATCH+GML]Atualização de Jogo
por Kevin Qua Dez 28, 2011 12:26 pm

» [TRFN][Engine]Cheats e Trapaças durante o jogo(estilo GTA San Andreas)
por trfn Sab Dez 10, 2011 5:04 pm

» [TRFN]Novos Botões para os tópicos
por Dancity Sab Dez 10, 2011 4:52 pm

» [TRFN][Engine]Janela personalizada sem complicações
por trfn Sab Dez 10, 2011 4:01 pm

» [C++] Melhor Compilador.
por trfn Sab Dez 10, 2011 3:57 pm

» [STC] Apresentando Stencyl Works
por Dancity Sab Dez 10, 2011 2:10 pm

» [Engine]Hud personalizada
por Dancity Sab Dez 10, 2011 2:07 pm

» ola pessoal.......
por trfn Sab Dez 10, 2011 11:05 am

» [TGM] Apresentando Tululoo Game Maker
por trfn Sab Dez 10, 2011 10:53 am

Os membros mais ativos da semana


[GML][TGNF]Partículas

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

Aprovado [GML][TGNF]Partículas

Mensagem por TGNF em Dom Nov 20, 2011 11:02 pm

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 TGNF em Dom Nov 20, 2011 11:29 pm, editado 1 vez(es)

TGNF

Warning:
0 / 1000 / 100

Mensagens: 14
Nível: 205
Data de inscrição: 14/11/2011

Voltar ao Topo Ir em baixo

Aprovado Re: [GML][TGNF]Partículas

Mensagem por Dancity em Dom Nov 20, 2011 11:12 pm

DEUS O_O

Super Tutorial, completíssimo, bem organizado e estruturado, muito bem explicado, deu pra entender bem cada função.
Você Dissecou tudo e explicou passo-a-passo. Parabéns, seu tutorial está muito bom!

Só faltou colocar a tag [GML] no título, corrigido.

Tópico Aprovado!


"Stay Hungry, Stay Foolish"

Dancity

Warning:
0 / 1000 / 100

Especialização: Design Gráfico
Mensagens: 46
Nível: 256
Data de inscrição: 11/11/2011
Localização: Brasília

http://indie.forumeiros.com

Voltar ao Topo Ir em baixo

Aprovado Re: [GML][TGNF]Partículas

Mensagem por TGNF em Dom Nov 20, 2011 11:25 pm

Valeu, esse foi um dos tutoriais que mais deu trabalho, mas também, foi o melhor que me saiu.
Desculpe pela falta de atenção quanto à tag, e obrigado por aprová-lo, é bom saber que nosso trabalho é bem recebido Muito Feliz.

TGNF

Warning:
0 / 1000 / 100

Mensagens: 14
Nível: 205
Data de inscrição: 14/11/2011

Voltar ao Topo Ir em baixo

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


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