sexta-feira, 6 de janeiro de 2012

[SIGILOSO] CHUVA REALISTA!!

SIGI: Hey Pipolho, pegue seu guarda-chuva, vem vindo uma frente fria!
Pipolho: Mas tá fazendo 40 graus... o_o
SIGI: Esqueça, vc nao entendeu o trocadilho..... ¬¬


Olá GMBR!! Voltando aos velhos tempos, venho com um novo tutorial quando tenho um dia agradável... (Ela estava linda hoje, com seus cabelos tão lisos! )
Vamos hj aprender a montar um efeito de chuva bem realista!

Qualidade
Nome: CHUVA REALISTA!!
Blogueiro: SIGILOSO
Descrissao: Tutorial de como criar um efeito de chuva para seus jogos de plataformas 2D!
Versao: Pro
Foto(s):


Tutorial:
=== Como começamos, SIGILOSO?? ===

Para começar, iremos precisar das sprites do efeito: os pingos de chuva e as gotas de quando ela se chocar com o chão.


Pipolho: Ooh!! Os pingos irão de desfazer ao se chocarem com o chão?
SIGI: Sim, mas cale a boca e deixe eu terminar.... ¬¬


Aí estão nossas sprites: ( deve ser difícil clicar nelas pra salvá-las.... XD )

Bem simples, não? Tendo elas em mãos, vamos dar início ao tuto!
Vamos criar um objeto controlador da chuva. Não será necessário se vc tiver um objeto de controle, ou algo parecido.
Em seu CREATE, iremos declarar as seguintes variáveis:
global.CH_VENTO=0
global.CH_FORCA=1

Onde.... CH_VENTO irá declarar a velocidade horizontal da chuva, ou seja, poderemos criar uma chuva de vento, onde os pingos se inclinarão para um lado!
CH_FORCA irá definir a intensidade da chuva, ou seja, a quantidade de pingos que irão cair! =D

Com isso, nós iremos deixar nosso amigo controlador um pouco e começar a mecher com os pingos da chuva. Crie um novo objeto e o nomeie de obj_pingo_chuva, utilizando a sprite do pingo de chuva. Para os mais "lentos", é a sprite mais comprida.


Pipolho: Claro que sim, eu já tinha reparado!!
SIGI: :--': .........


No CREATE deste objeto, iremos colocar o seguinte:
x=random_range(view_xview,view_xview+640)
y=view_yview-sprite_height/2
vspeed=20

Calma criançada, não precisam me xingar! Já irei explicar esse código!
x=random_range(view_xview,view_xview+640), fará com que os pingos de chuva surjam apenas na parte da room captada pela view. Traduzindo.... Para evitar indesejáveis lags, os pingos de chuva surgirão apenas onde o player pode ver, evitando um excesso de intâncias!! =D
É o random_range que fará isso, fará com que o pingo de chuva surja em qualquer lugar onde o player possa ver.
y=view_yview-sprite_height/2 quase a mesma coisa, ele só irá aparecer onde o player pode ver!
E vspeed=20... acho que vcs podem deduzir sozinhos.


Pipolho: Nao.... o_o
SIGI: ... faz os pingos caírem.


Pois bem, no STEP deste objeto, iremos pôr o seguinte:
hspeed=global.CH_VENTO
image_angle=hspeed

if y-sprite_height/2>view_yview+480
instance_destroy()

Hey, já vi esse global.CH_VENTO antes!
A primeira metade deste codiguinho (essa palavra existe??)....
fará com que o pingo se mova na horizontal de acordo com a variável global.CH_VENTO, e também irá se inclinar, parecendo msm que é uma chuva de vento! Já a segunda metade do código, faz com que ele desapareça ao sair do alcance da view!

Bem, vamos deixar esse objeto quieto um pouco, tbm.
Agora falta fazer o efeito de quando o pingo colidir com algum objeto sólido!
Crie um novo objeto, o nomeie de obj_pingo_chuva_2, e dessa vez use a segunda sprite (pelo amor de Deus, espero que ninguem tenha confundido as sprites!!)
Em seu CREATE, vamos colocar o seguinte:
hspeed=random_range(-3,3)
vspeed=random_range(-5,0)
image_xscale=random_range(1,0.5)
image_yscale=image_xscale

Esse monte de random_range é que faz o verdadeiro efeito acontecer, pois irá fazer cada um dos "mini-pingos" se comportarem de maneira aleatória! =D
Agora, em seu STEP, colocaremos o seguinte:
image_alpha-=0.0.5
if image_alpha<0
instance_destroy()

vspeed+=0.2

Simplismente, os "mini-pingos" irão começar a desaparecer, até serem destruídos. Já criei um tuto sobre efeitos especiais que segue o msm esquema! http://r16.imgfast.net/users/1613/25/17/64/smiles/745821.png
E o vspeed+=0.2 fará com que eles caiam... óbvio

Voltando ao nosso mano obj_pingo_chuva (malz a gíria... fui ver 5xFavela hoje XD), vamos agora criar um evento de colisão com o objeto sólido que vc utiliza em seu jogo. Chão, paredes... até msm o player e inimigos. Todos os objetos em que os pingos de chuva poderão interagir.
Nesse evento, coloque o seguinte:
instance_create(x,other.y-other.sprite_height/2,obj_pingo_chuva_2)
instance_create(x,other.y-other.sprite_height/2,obj_pingo_chuva_2)
instance_create(x,other.y-other.sprite_height/2,obj_pingo_chuva_2)
instance_destroy()

Traduzindo, ao tocar nesse objeto, o pingo de chuva será destruído, dando lugar ao efeito que criamos, dando a impressão de que o pingo de chuva foi dividido em várias gotinhas! =D

Agora só falta fazer com que os pingos de chuva apareçam na tela. Lembra do objeto controlador? Sim, aquele msm!
Volte nele e coloque este código em seu STEP:
(Este código foi refeito pelo grande amigo rafasgb! =D)
repeat(global.CH_FORCA)
{
instance_create(0,0,obj_pingo_chuva)
}



Pipolho: Haha, finalmente a sua face noob está surgindo!! Vc é um inúti que pede pros outros fazerem os códigos!! SIGI: E você nao passa de um personagem fictício. :u_u:
Pipolho: ......


Fim do momento PIPOLHO, vamos explicar este código.
Ele fará com que, quanto maior for o valor da variável CH_FORCA, mais pingos de chuva surjam na tela! Simples, não?
Lembrando que esse efeito é 100% automático, ou seja, para que não chova dentro do jogo, a variável CH_FORCA deverá ter o valor igual a 0, caso contrário, começará a chover! \0/

Pronto! Depois de seguir todo este tuto, seu efeito estará feito!
Explorando esse tuto, vc pode fazer com que, por exemplo, o player ou os inimigos sofrão dano com as gotas da chuva, ou até msm, criar um efeito de neve!

Bem, vou indo... dessa vez eu passo da fase 41 de Bubble Bobble!!!

Creditos: SIGILOSO

Nenhum comentário:

Postar um comentário