Conectar-se
Quem está conectado
31 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 31 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 01/06/2008
Número de Mensagens : 1015
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://supermariobrasileiro.blogspot.com

Fazendo o efeito "FT" do Mario

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.
avatar
Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Fazendo o efeito "FT" do Mario

em Sex 13 Nov 2009, 16:01
Oxen't OMG, muito bom.. e útil e prestativo e bom *-***********

VLw
avatar
Data de inscrição : 17/05/2009
Número de Mensagens : 938
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Fazendo o efeito "FT" do Mario

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 !
avatar
Data de inscrição : 01/06/2008
Número de Mensagens : 1015
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://supermariobrasileiro.blogspot.com

Re: Fazendo o efeito "FT" do Mario

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!
Convidad
Convidado

Re: Fazendo o efeito "FT" do Mario

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¬)]
avatar
Data de inscrição : 01/06/2008
Número de Mensagens : 1015
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://supermariobrasileiro.blogspot.com

Re: Fazendo o efeito "FT" do Mario

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!
avatar
Data de inscrição : 11/08/2009
Número de Mensagens : 213
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Fazendo o efeito "FT" do Mario

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
avatar
Data de inscrição : 01/06/2008
Número de Mensagens : 1015
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://supermariobrasileiro.blogspot.com

Re: Fazendo o efeito "FT" do Mario

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).
avatar
Data de inscrição : 04/01/2010
Número de Mensagens : 19
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://fiquelouco.blogueiros.net

Re: Fazendo o efeito "FT" do Mario

em Sex 08 Jan 2010, 03:31
Legal. Vou experimentar isso no Mega-bike
Conteúdo patrocinado

Re: Fazendo o efeito "FT" do Mario

Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum