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

» (Resolvido) 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

» (RESOLVIDO) 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


[TRFN]Chuva usando sprites

+2
luiz_eldorado
TRFN
6 participantes

Ir para baixo

[TRFN]Chuva usando sprites Empty [TRFN]Chuva usando sprites

Mensagem por TRFN Qua 22 Fev 2012, 19:00

Chuva com sprites
Tutorial ensinando a criar sua própria chuva sem partículas ou efeitos pre-definidos .

Nível : Intermediário
Requerimentos : Conhecimento básico sobre for,if & else,Arrays, Variáveis .
Autor : Túlio Rodrigues de Freitas Nascimento .

- Previa -
Hoje compartilho com vocês uma descoberta que mesmo não sendo a melhor forma de execução seria uma ótima forma de estudo para se ter outras ideias.
Outro dia tentava criar um efeito de chuva com Sprites,e quebrando bastante a cabeça,projetei um sistema que cria instancias segundo o tamanho da View e projeta objetos para caírem,como gotas,mas e claro sem deixar o jogo uma lerdeza.

Espero que gostem do tutorial Exclamation

- Tutorial -
Então aqui estamos.Vamos primeiro entender a ideia deste sistema :
Existem dois objetos : o Objeto Chuva e o Objeto Gota .O objeto chuva manipula a ocorrência de chuva e decide as posições de cada qual gota.Já o objeto gota age naturalmente caindo e se recriando,como num Loop infinito.
Para que tudo ocorresse como esperado, precisaríamos de certos fatores,cujo seriam a criação da instancia da gota até cobrir a View,depois a determinação de cada posição inicial.

Como um mesmo objeto seria usado entre 900 e 1400 vezes,seria necessário que houvesse uma identificação de cada um,mas e claro sem pesar nos recursos do jogo.

Teríamos também que projeta-lo para se recriar e ao mesmo tempo seguir a View.
Como ele só muda a posição quando ele se destrói, teríamos que fazer objetos extras (fora da visão da View,no caso) para que o efeito ficasse mais preciso.

Crie um objeto chamado obj_chuva e que comecemos pelo create deste novo objeto :
Código:
alarm[0]=1; //inicia a contagem para criação das gotas .
ground=320; //grade para chuva (para deixa-la mais atraente) .


Até ai bem simples.
Começamos um alarm e definimos uma variável.Agora vamos para uma parte um pouco mais complexa .Usando o mesmo obj_chuva crie um evento Alarm 0 e crie um execute code com este código :
Código:
if(!variable_local_exists("forset"))then{
    variable_local_set("forset",0); //Taxa de repetição obrigatória (favor não mecher nesta parte.
} else if(forset>=8)then{
    exit //terminamos o evento no fim da contagem
} else if(forset<=8)then{
    forset+=1; //somamos +1 a contagem obrigatória.
}
/* Usamos um for agora para criarmos as gotas na room */
for(i=-ground;i<view_wview[0]+ground;i+=choose(2,4,8,10,14,16)){
if(!variable_local_exists("n_gotas"))then n_gotas=0;
else n_gotas+=1;
xx[n_gotas]=i-random_range(2,4);
yy[n_gotas]=choose(-irandom_range(16,32),-irandom_range(8,16),-irandom_range(4,8),-irandom_range(2,4));
inst[n_gotas]=instance_create(view_xview+xx[n_gotas],yy[n_gotas],obj_gotadechuva);
global.gota_x[n_gotas]=xx[n_gotas];
global.gota_y[n_gotas]=yy[n_gotas];
inst[n_gotas].id_da_gota=n_gotas;
}
alarm[0]=5;


Esse código cria todas as gotas na room e define uma identificação para cada qual.
O Objeto Chuva está pronto !
Agora precisamos criar as gotas que vão ser manipuladas(ou melhor,a gota que vai ser manipulada quase 1000 vezes) .

Crie um objeto chamado obj_gotadechuva nele coloque no create :
Código:
sprite_index=sprite_da_gota_de_chuva //use uma sprite com 5 imagens de gotas de chuva com tamanhos alternados.Tem uma de exemplo para download logo abaixo.Utilize de preferencia uma imagem branca para que a cor seja alterável por GML .
image_index=choose(0,1,2,3,4) //seleciona randomicamente uma sub-image da gota de chuva.
image_speed=0;
/* Definição da cor da gota (fica legal só se a imagem da gota for branca) */
intensidade=100;
vermelho=230-intensidade;
verde=255-intensidade;
azul=200+intensidade/4;
image_blend=make_color_rgb(vermelho,verde,azul)
/* definição da transparência dela */
image_alpha=random_range(.4,.8)
alarm[0]=5 //inicia um simples contador


Lembrando que,os códigos foram explicados acima.
Quanto a sprite,vou disponibilizar a que estava usando no meu jogo,que eu criei,mas peço que seja usada só para testes mesmo.
Link : http://www.mediafire.com/?bt3ifl84j737iw4

Vamos agora definir o Alarm 0 dele :
Código:
if(vspeed>7)exit //Se a velocidade atingir o limite,a gota para de acelerar neste momento e desce constantemente.
vspeed+=2 //soma velocidade vertical caso ela não tenha atingido a velocidade limite.
hspeed-=.75 //um pequeno efeito na gota para ficar mais agradável .
alarm[0]=1 //retorna caso não tenhamos atingido a velocidade adequada


Lembrando que as explicações já estão no código.
Agora vamos ao que interessa.
Crie um evento Outside_Room que contenha :
Código:
//uma checagem para garantirmos que é o momento certo.
if(y<room_height)exit
//uma especie de identificação para sabermos com qual gota estamos lidando.
ids[id_da_gota]=instance_create(view_xview+global.gota_x[id_da_gota],view_yview[0]+ystart,obj_gotadechuva)
//repassa a identificação para a sucessora.
ids[id_da_gota].id_da_gota=id_da_gota
//Destrói a antiga gota.
instance_destroy();


E pronto,agora basta você colocar o objeto obj_chuva e ver os resultados.
Vale lembrar que é indicado o uso de views e que quanto maior a View,mais arriscado .

Uma engine de exemplo : http://www.mediafire.com/?9valzyyv17rsw1j

Espero que tenham gostado.
Obrigado pela atenção. felicidade

Flws


Última edição por Rock Lee em Sáb 07 Abr 2012, 01:37, editado 5 vez(es)
TRFN
TRFN

Games Ranking : Nota C

Notas recebidas : C + C + C
Data de inscrição : 16/01/2012
Reputação : 70
Número de Mensagens : 1192
Prêmios : [TRFN]Chuva usando sprites Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 2

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Web Tecnology
  • Javascript
  • Outros


https://site13.com.br/

Ir para o topo Ir para baixo

[TRFN]Chuva usando sprites Empty Re: [TRFN]Chuva usando sprites

Mensagem por luiz_eldorado Qua 22 Fev 2012, 21:29

Gostei do tuto, é bom pra que tem o Lite.
Eu vi que tinha um efeito de andar um pouco para o lado. A pessoa nao pode modificar esse valor, entao voce poderia usar um image_angle. Assim daria pra ficar mudando pra mais forte e fraco. A mesma coisa pra quantidade de gotas, poderiam ficar mais forte ou rapidas.
Assim tenho um controle sobre a chuva em tempo real, mudando a velocidade do vento e a intensidade da chuva.
Até mais!
luiz_eldorado
luiz_eldorado

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 30/07/2011
Reputação : 47
Número de Mensagens : 928
Prêmios : [TRFN]Chuva usando sprites Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

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

http://luizpontes.tk/

Ir para o topo Ir para baixo

[TRFN]Chuva usando sprites Empty Re: [TRFN]Chuva usando sprites

Mensagem por TRFN Qui 23 Fev 2012, 12:25

luiz_eldorado escreveu:Gostei do tuto, é bom pra que tem o Lite.
Eu vi que tinha um efeito de andar um pouco para o lado. A pessoa nao pode modificar esse valor, entao voce poderia usar um image_angle. Assim daria pra ficar mudando pra mais forte e fraco. A mesma coisa pra quantidade de gotas, poderiam ficar mais forte ou rapidas.
Assim tenho um controle sobre a chuva em tempo real, mudando a velocidade do vento e a intensidade da chuva.

Boa sugestão.
Já até havia pensado nisso anteriormente,mas não quero complicar demais,prefiro seguir essa linha de raciocínio mesmo para que o tutorial seja executado com mais facilidade.

Mas para alterar o sistema não é difícil,basta inverter a sprite.
Você pode criar sua própria e inverter os valores de velocidade vertical e horizontal (nada que um choose ou random não resolva) e assim fazer alternancias .

Obrigado por ler.
TRFN
TRFN

Games Ranking : Nota C

Notas recebidas : C + C + C
Data de inscrição : 16/01/2012
Reputação : 70
Número de Mensagens : 1192
Prêmios : [TRFN]Chuva usando sprites Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 2

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Web Tecnology
  • Javascript
  • Outros


https://site13.com.br/

Ir para o topo Ir para baixo

[TRFN]Chuva usando sprites Empty Re: [TRFN]Chuva usando sprites

Mensagem por Markituh Qui 23 Fev 2012, 15:35

Bom tutorial. Como um bom programador, só não achei a identação muito boa, mas nada que comprometa muito. Só não entendi a utilidade de "ground" - indo pela lógica, é a direção das gotas de chuva, certo? Se não, explique "grade". Happy

Tutorial aprovado
Movido.
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : [TRFN]Chuva usando sprites Empty

Medalhas x 0 Tutoriais x 1 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

[TRFN]Chuva usando sprites Empty Re: [TRFN]Chuva usando sprites

Mensagem por TRFN Qui 23 Fev 2012, 15:44

Bom tutorial.
[...]
Tutorial aprovado
Movido.
Obrigado.

Como um bom programador, só não achei a identação muito boa, mas nada que comprometa muito.
Haveriam várias formas para criar as IDs,porem optei por esta pois foi a primeira que pensei.Ela é bem simples e fácil de entender , usa um for e algumas arrays apenas Razz

Só não entendi a utilidade de "ground" - indo pela lógica, é a direção das gotas de chuva, certo? Se não, explique "grade". Happy
Bom,acho que não falei muito dele.Na verdade essa variável cria objetos extras na room (mas fora da View) para que o efeito fique mais realista.Só criei essa variável para não complicar muito,porque senão ela nem ia existir : já faria isso diretamente.Essa variável só é usada no for mesmo (até onde eu me lembro xD)
TRFN
TRFN

Games Ranking : Nota C

Notas recebidas : C + C + C
Data de inscrição : 16/01/2012
Reputação : 70
Número de Mensagens : 1192
Prêmios : [TRFN]Chuva usando sprites Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 2

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Web Tecnology
  • Javascript
  • Outros


https://site13.com.br/

Ir para o topo Ir para baixo

[TRFN]Chuva usando sprites Empty Re: [TRFN]Chuva usando sprites

Mensagem por jharik Ter 20 Mar 2012, 18:30

falllllllllll
jharik
jharik

Data de inscrição : 19/03/2012
Reputação : 1
Número de Mensagens : 25
Prêmios : [TRFN]Chuva usando sprites 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

[TRFN]Chuva usando sprites Empty Re: [TRFN]Chuva usando sprites

Mensagem por Benjamim_M Qua 21 Mar 2012, 14:34

eu fiz tudo direitinho mas num caiu uma gota quando eu coloquei pra testar...
FAIL
Benjamim_M
Benjamim_M

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 16/02/2012
Reputação : 1
Número de Mensagens : 57
Prêmios : [TRFN]Chuva usando sprites 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

http://www.minegamesb.blogspot.com

Ir para o topo Ir para baixo

[TRFN]Chuva usando sprites Empty Re: [TRFN]Chuva usando sprites

Mensagem por TRFN Sáb 07 Abr 2012, 01:37

Benjamim_M escreveu:eu fiz tudo direitinho mas num caiu uma gota quando eu coloquei pra testar...
Engraçado,eu testei e funcionou perfeitamente.Você seguiu passo-a-passo o que eu pedi ?
Se quiser comparar,baixe a engine que fiz enquanto executava o tutorial para testa-lo.
O download da engine de demonstração está no próprio tutorial.
Flws
TRFN
TRFN

Games Ranking : Nota C

Notas recebidas : C + C + C
Data de inscrição : 16/01/2012
Reputação : 70
Número de Mensagens : 1192
Prêmios : [TRFN]Chuva usando sprites Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 2

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Web Tecnology
  • Javascript
  • Outros


https://site13.com.br/

Ir para o topo Ir para baixo

[TRFN]Chuva usando sprites Empty Re: [TRFN]Chuva usando sprites

Mensagem por peixoto Dom 15 Abr 2012, 21:05

Otimo tutorial TRFN!

Teria como fazer o mesmo usando o draw?(sem sprites)

usando só o draw,fica beeem mais leve!
peixoto
peixoto

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 14/02/2010
Reputação : 3
Número de Mensagens : 911
Prêmios : [TRFN]Chuva usando sprites 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

[TRFN]Chuva usando sprites Empty Re: [TRFN]Chuva usando sprites

Mensagem por TRFN Sex 04 maio 2012, 22:16

peixoto escreveu:Otimo tutorial TRFN!

Teria como fazer o mesmo usando o draw?(sem sprites)

usando só o draw,fica beeem mais leve!

Ah vlw.
Depois posso estudar possibilidades de não se usar objetos.Se conseguir,modifico esse.
TRFN
TRFN

Games Ranking : Nota C

Notas recebidas : C + C + C
Data de inscrição : 16/01/2012
Reputação : 70
Número de Mensagens : 1192
Prêmios : [TRFN]Chuva usando sprites Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 2

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Web Tecnology
  • Javascript
  • Outros


https://site13.com.br/

Ir para o topo Ir para baixo

[TRFN]Chuva usando sprites Empty Re: [TRFN]Chuva usando sprites

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