Fazendo o efeito "FT" do Mario

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

Fazendo o efeito "FT" do Mario

Mensagem por CPinheiro em Sex 13 Nov 2009, 15:29

Fazendo o efeito "FT" do Mario

Com certeza a maioria daqui já jogou Super Mario World. Lançado junto com o SNES, o jogo apresentava diversos efeitos de transição de tela. O mais comum era a tela fechar em forma de círculo no final de cada fase.

Estudei um pouco e descobri um método para fazer o FT ("fechar tela"). É muito simples e bastante efetivo. O bom é que você não pode só fechar a tela em forma de círculo, mas da forma que quiser: em estrela, em caveira, em quadrado, etc.

Como funciona? Simples: desenhamos um sprite no meio da tela, e iremos fazer esse sprite diminuir de tamanho. Como um exemplo, utilizarei esse sprite:



É um sprite com o fundo branco. Ao adicioná-lo no Game Maker, não esqueça de deixá-lo transparente e de colocar os Origins no centro dele (clique no botão "Center", ao adicionar o sprite).

Agora, crie um objeto e coloque esse sprite. Adicione o seguinte código no evento Create:

Código:
x = view_xview[0] + view_wview[0]/2;
y = view_yview[0] + view_hview[0]/2;
image_xscale = 8;
image_yscale = 8;

Nas duas primeiras linhas, colocamos o x e o y do objeto no meio da tela. Já nas duas últimas linhas, nós aumentamos o tamanho do sprite, para que ele pegue a tela toda. Se sua tela for pequena, você pode diminuir o valor do image_xscale e do image_yscale.

Agora, coloque o seguinte código no Step:

Código:

if (image_xscale > 0)
    {
        image_xscale-=0.06
        image_yscale-=0.06
    }
else
    {
        room_goto_next();
    }

O código acima é bem simples. Primeiro, checamos se o image_xscale é maior que zero. Se for, diminuímos o image_xscale e o image_yscale em 0.06. O que irá acontecer é que o sprite irá diminuir de tamanho aos poucos, até sumir. Assim que o image_xscale for menor que zero, o jogo pula para a próxima room. Se quiser fazer a tela fechar mais rápido, aumente o valor (coloquei 0.06 por opção).

Nota: checamos apenas o image_xscale porque, neste caso, o image_xscale e o image_yscale tem o mesmo valor sempre.

Você pode testar agora. Se fez tudo certo, o sprite diminuirá de tamanho até sumir, e então você trocará de room. Mas temos um problema: conforme o sprite vai diminuindo, parte da tela fora do retângulo fica visível.

Apesar de ter demorado para descobrir, é bem simples de resolver. Adicione o seguinte código no evento Draw do objeto:

Código:

//Retangulos
draw_set_color(c_black);
draw_rectangle(view_xview[0],view_yview[0],x-(sprite_width/2),view_yview[0]+view_hview[0],0)
draw_rectangle(x-(sprite_width/2),view_yview[0],x+(sprite_width/2),y-(sprite_height/2),0)
draw_rectangle(x+(sprite_width/2-2),view_yview[0],view_xview[0]+view_wview[0],view_yview[0]+view_hview[0],0)
draw_rectangle(x-(sprite_width/2),y+(sprite_height/2-3),x+(sprite_width/2),view_yview[0]+view_hview[0],0)
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,c_white,image_alpha)

Esse código é um pouco mais complicado que os outros. Nele, nós desenhamos quatro retângulos de cor preta nas bordas do sprite, para que a área que antes era visível se torne impossível de se enxergar. No final do código, nós desenhamos o próprio sprite.

Nota: quando usamos algum código no evento Draw, o sprite do objeto não é desenhado na tela. Por isso uso a última linha de código. Assim, o objeto terá seu sprite visto na tela.

Podem testar. Verão que o código funciona perfeitamente: o círculo vai dimunuindo de tamanho até fechar no centro, e então troca de room. Se quiser colocar outro efeito, é só usar outro sprite, sendo que a parte branca seria a parte que ficaria visível na tela.

Download do exemplo: clique aqui.

Tutorial escrito por CPinheiro, da Staff da Game Maker Brasil. Não copie sem autorização.

CPinheiro

Número de Mensagens : 1015
Idade : 20
Data de inscrição : 01/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://supermariobrasileiro.blogspot.com

Voltar ao Topo Ir em baixo

Re: Fazendo o efeito "FT" do Mario

Mensagem por Gabreel em Sex 13 Nov 2009, 16:01

Oxen't OMG, muito bom.. e útil e prestativo e bom *-***********

VLw

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Fazendo o efeito "FT" do Mario

Mensagem por Denis Lemos em Sex 13 Nov 2009, 19:35

Cara bem legal, eu estou fazendo um fan game do Mario e gostei muito de saber como que se faz isso !
Só que eu queria te dar uma dica, se quizer deixar mais igual ainda a função, coloca no step desse objeto aquela função ''move_towards_point(obj_mario.x,obj_mario.y,3), para a tela ir fechando no mario, pois eu tenho o jogo do Mario aqui e é isso que acontece !
E eu testei, adicionando esse código e funcionou direitinho, aí é só ir andando com o Mario que a tela vai fechando nele ! Ficou igualzinho tenta desse jeito também para ver
como que fica !

Há coloca onde muda para a próxima room, para em vez ir para a próxima voltar para ela mesma, para ficar repetindo diverssas vezes "room_goto(nome_da_mesma_room)", mas acho que você já sabe disso !

Bom acho que falei e opinei demais da conta... Parabéns pela dica é bem útil para quem é fan do Mario !

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Fazendo o efeito "FT" do Mario

Mensagem por CPinheiro em Sex 13 Nov 2009, 20:06

Sim, é possível fazer assim também. Mas caso o Mario fique parado, acho mais prático mudar apenas o código do Create:

Código:

x = obj_mario.x;
y = obj_mario.y;

Caso o Mario se mexa, é só colocar o código acima no Step.
Agradeço à todos pelos comentários!

CPinheiro

Número de Mensagens : 1015
Idade : 20
Data de inscrição : 01/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://supermariobrasileiro.blogspot.com

Voltar ao Topo Ir em baixo

Re: Fazendo o efeito "FT" do Mario

Mensagem por Convidad em Sex 13 Nov 2009, 21:48

Legal! Muito bom Morello. Acho que seria legal usar isso pra formas mais "diferentes". No caso de círculos ou quadrados (ou até estrelas), seria legal usar as funções nativas do GM para desenhá-las.

É só um palpite, pra quem não optar por adicionar um sprite a mais só para o efeito. [Z¬)]

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Fazendo o efeito "FT" do Mario

Mensagem por CPinheiro em Sex 13 Nov 2009, 22:08

Capitão Commando escreveu:Legal! Muito bom Morello. Acho que seria legal usar isso pra formas mais "diferentes". No caso de círculos ou quadrados (ou até estrelas), seria legal usar as funções nativas do GM para desenhá-las.

É só um palpite, pra quem não optar por adicionar um sprite a mais só para o efeito. [Z¬)]

É, também pensei em fazer isso, mas preferi fazer assim pra ter mais liberdade com o desenho, sabe? Por exemplo, uma estrela. Eu posso desenhar uma estrela, mas uma estrela do Mario tem olhos. rs

Só um exemplo. Sua ideia também é excelente!
E mais uma vez, obrigado à todos pelos comentários!

CPinheiro

Número de Mensagens : 1015
Idade : 20
Data de inscrição : 01/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://supermariobrasileiro.blogspot.com

Voltar ao Topo Ir em baixo

Re: Fazendo o efeito "FT" do Mario

Mensagem por Naut2006 em Dom 15 Nov 2009, 21:47

Muito bom. Só faltou diser que quando desenhar o sprite, tem que deixar o último pixel da primeira coluna branco também, se não não funciona =D

Goodbye Happy

Naut2006

Número de Mensagens : 213
Idade : 20
Data de inscrição : 11/08/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Fazendo o efeito "FT" do Mario

Mensagem por CPinheiro em Dom 15 Nov 2009, 22:06

Naut2006 escreveu:Muito bom. Só faltou diser que quando desenhar o sprite, tem que deixar o último pixel da primeira coluna branco também, se não não funciona =D

Goodbye Happy

Eu falei isso sim, lol.


É um sprite com o fundo branco. Ao adicioná-lo no Game Maker, não esqueça de deixá-lo transparente e de colocar os Origins no centro dele (clique no botão "Center", ao adicionar o sprite).

CPinheiro

Número de Mensagens : 1015
Idade : 20
Data de inscrição : 01/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://supermariobrasileiro.blogspot.com

Voltar ao Topo Ir em baixo

Re: Fazendo o efeito "FT" do Mario

Mensagem por IvanDSM em Sex 08 Jan 2010, 03:31

Legal. Vou experimentar isso no Mega-bike

IvanDSM

Número de Mensagens : 19
Data de inscrição : 04/01/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://fiquelouco.blogueiros.net

Voltar ao Topo Ir em baixo

Re: Fazendo o efeito "FT" do Mario

Mensagem por Conteúdo patrocinado Hoje à(s) 12:44


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