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
» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentro
por Rukasu777 Ontem à(s) 18:10

» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03

» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42


Tutorial - Janela Falsa

+2
Suadao
Froidz
6 participantes

Ir para baixo

Tutorial - Janela Falsa Empty Tutorial - Janela Falsa

Mensagem por Froidz Sex 15 Jan 2010, 09:18

Tutorial - Janela Falsa

Game Maker: 7.0 Pro
Nível de Experiência: Intermediário/Avançado

Descrição:

Este é um efeito simples, legal e um tanto quanto curioso.
Nele irei mostrar como dar a ilusão de que um objeto está dentro de um local, que na verdade não existe, tente entender:

Tutorial - Janela Falsa Testev

Na imagem você vê um tela cinza, onde se encontra uma "Janela" preta com algo dentro,
mas você deve pensar:

-Como eu faria isso?

O modo mais fácil e cabível de fazer isso seria você deixa o fundo preto, colocar o objeto que ficará dentro da janela, e por cima uma sprite cinza, certo?

Mas com certeza você teria problemas, pois pense bem, se você quiser mover esta janela, vários problemas iriam aparecer, então...

Vamos lá!

Para fazer isso você só vai precisar da sprite que ficará dentro da janela, então crie um objeto com esse sprite e digite no evento Draw:

Código:
/*Script desenvolvido por: Froidz
Créditos exigidos.*/
var xx,yy,xx1,yy1,xx2,yy2;
xx = 32+320;
yy = 32+240;
xx1 = 0;
yy1 = 0;
xx2 = 0;
yy2 = 0;
draw_rectangle(32,32,xx,yy,0)

if mouse_x<=32 then {xx1 = -mouse_x+32}
if mouse_y<=32 then {yy1 = -mouse_y+32}
if mouse_x+sprite_width>=xx then {xx2=-mouse_x+xx-sprite_width}
if mouse_y+sprite_height>=yy then {yy2=-mouse_y+yy-sprite_height}

if mouse_x<=xx and mouse_x+sprite_width>=32 and mouse_y<=yy and mouse_y+sprite_height>=32 {
draw_sprite_part_ext(sprite_index,-1,0+xx1,0+yy1,xx2+sprite_width-xx1,yy2+sprite_height-yy1,mouse_x+xx1,mouse_y+yy1,1,1,c_white,1)
}

draw_rectangle(32,32,xx,yy,1)

/*Explicação--

O código acima apenas faz com que a sprite do objeto mude de tamanho, e fique invisível caso esteja fora da janela.

O código abaixo, define todas as variáveis:
var xx,yy,xx1,yy1,xx2,yy2;
xx = 32+320;
yy = 32+240;
xx1 = 0;
yy1 = 0;
xx2 = 0;
yy2 = 0;

O código abaixo, desenha o fundo preto da janela:
draw_rectangle(32,32,xx,yy,0)

O código abaixo, faz com que os valores de tamanho e posição
da sprite e do objeto mudam de acordo com a posição do mouse:
if mouse_x<=32 then {xx1 = -mouse_x+32}
if mouse_y<=32 then {yy1 = -mouse_y+32}
if mouse_x+sprite_width>=xx then {xx2=-mouse_x+xx-sprite_width}
if mouse_y+sprite_height>=yy then {yy2=-mouse_y+yy-sprite_height}

O código abaixo, desenha a sprite com as posições modificadas à cima, caso a sprite estiver dentro da janela falsa:
if mouse_x<=xx and mouse_x+sprite_width>=32 and mouse_y<=yy and mouse_y+sprite_height>=32 {
draw_sprite_part_ext(sprite_index,-1,0+xx1,0+yy1,xx2+sprite_width-xx1,yy2+sprite_height-yy1,mouse_x+xx1,mouse_y+yy1,1,1,c_white,1)
}

E por último, desenhamos uma linha preta para dar a impressão que o objeto passa por baixo dela:
draw_rectangle(32,32,xx,yy,1)*/

Agora, adicione esse objeto à room e teste o jogo, a impressão que dá é que você tem uma tela cinza, onde uma janela preta esconde um objeto, que é movido pelo mouse.

Curiosidades:

1-Caso você fosse fazer isso sem usar este script, apenas usando a sprite do objeto que ficaria lá dentro, a sprite do objeto apareceria fora da "janela".

2-Você pode mover tanto a janela, quanto o objeto, que não há possibilidade da sprite aparecer pra fora da janela (Isso é, se você modificar corretamente os valores de onde a janela é desenhada).

3-Este script é especialmente desenvolvido para quem quer fazer um programa, onde janelas falsas são criadas, e não quer que o conteúdo da janela apareca fora do mesmo.

Obs: Caso não saiba como mover a janela sem ter problemas, modifique os valores 32 por x e y (alguns valores 32 indicam x, e outros y), isso fará com que a janela preta fique fixada no objeto, assim podendo movê-la com ele.

Espero que tenham gostado.
Valeu! o/


Última edição por Froidz em Sex 15 Jan 2010, 13:15, editado 1 vez(es)
Froidz
Froidz

Data de inscrição : 03/08/2008
Reputação : 4
Número de Mensagens : 1053
Prêmios : Tutorial - Janela Falsa 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

Tutorial - Janela Falsa Empty Re: Tutorial - Janela Falsa

Mensagem por Suadao Sex 15 Jan 2010, 09:29

Muito bom o tutorial Very Happy
Pena que é pra pro, eu não tenho pro Sad
Suadao
Suadao

Data de inscrição : 22/11/2009
Reputação : 4
Número de Mensagens : 1035
Prêmios : Tutorial - Janela Falsa 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.recursos-mania.forumeiros.com

Ir para o topo Ir para baixo

Tutorial - Janela Falsa Empty Re: Tutorial - Janela Falsa

Mensagem por Froidz Sex 15 Jan 2010, 09:34

Bom, eu usei o Pro, provavelmente não vá funcionar na versão lite, mas tenta ai...
Froidz
Froidz

Data de inscrição : 03/08/2008
Reputação : 4
Número de Mensagens : 1053
Prêmios : Tutorial - Janela Falsa 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

Tutorial - Janela Falsa Empty Re: Tutorial - Janela Falsa

Mensagem por fonetico Sex 15 Jan 2010, 13:02

Na verdade... o tutorial é bom mas eu não consegui entender o código, somente o draw_rectangle...
fonetico
fonetico

Data de inscrição : 05/10/2009
Reputação : 7
Número de Mensagens : 1830
Prêmios : Tutorial - Janela Falsa 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

Tutorial - Janela Falsa Empty Re: Tutorial - Janela Falsa

Mensagem por Froidz Sex 15 Jan 2010, 13:15

Aqui a explicação de todo o codigo:

Código:
/*Explicação--

O código acima apenas faz com que a sprite do objeto mude de tamanho, e fique invisível caso esteja fora da janela.

O código abaixo, define todas as variáveis:
var xx,yy,xx1,yy1,xx2,yy2;
xx = 32+320;
yy = 32+240;
xx1 = 0;
yy1 = 0;
xx2 = 0;
yy2 = 0;

O código abaixo, desenha o fundo preto da janela:
draw_rectangle(32,32,xx,yy,0)

O código abaixo, faz com que os valores de tamanho e posição
da sprite e do objeto mudam de acordo com a posição do mouse:
if mouse_x<=32 then {xx1 = -mouse_x+32}
if mouse_y<=32 then {yy1 = -mouse_y+32}
if mouse_x+sprite_width>=xx then {xx2=-mouse_x+xx-sprite_width}
if mouse_y+sprite_height>=yy then {yy2=-mouse_y+yy-sprite_height}

O código abaixo, desenha a sprite com as posições modificadas à cima, caso a sprite estiver dentro da janela falsa:
if mouse_x<=xx and mouse_x+sprite_width>=32 and mouse_y<=yy and mouse_y+sprite_height>=32 {
draw_sprite_part_ext(sprite_index,-1,0+xx1,0+yy1,xx2+sprite_width-xx1,yy2+sprite_height-yy1,mouse_x+xx1,mouse_y+yy1,1,1,c_white,1)
}

E por último, desenhamos uma linha preta para dar a impressão que o objeto passa por baixo dela:
draw_rectangle(32,32,xx,yy,1)*/
Froidz
Froidz

Data de inscrição : 03/08/2008
Reputação : 4
Número de Mensagens : 1053
Prêmios : Tutorial - Janela Falsa 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

Tutorial - Janela Falsa Empty Re: Tutorial - Janela Falsa

Mensagem por CPinheiro Sex 15 Jan 2010, 15:11

Bom script, Cláudio.

Por se tratar mais de um script do quê de um tutorial, vou movê-lo, ok?
O efeito ficou bem legal. Refiz ele aqui deixando-o como um script em separado (pra poder mandar os valores, como a largura do retângulo e etc., por argumentos) e ficou bom.

Só recomendo que faça com que o código seja controlado por argumentos, acho que tornará mais fácil de usá-lo. Só isso mesmo, está muito bom. =)
CPinheiro
CPinheiro

Data de inscrição : 01/06/2008
Reputação : 0
Número de Mensagens : 1015
Prêmios : Tutorial - Janela Falsa 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

http://supermariobrasileiro.blogspot.com

Ir para o topo Ir para baixo

Tutorial - Janela Falsa Empty Re: Tutorial - Janela Falsa

Mensagem por Froidz Sex 15 Jan 2010, 18:44

Valeu Caio! =)
Bom, fiz o que disse e realmente fica muito melhor e mais fácil de ser manipulada, o script para ser usado realmente como um script:

Nomeie-o como FalseWindow:
Código:
/*script desenvolvido por: Froidz
Créditos exigidos.

argument0 = posição X da janela
argument1 = posição Y da janela
argument2 = tamanho horizontal da janela
argument3 = tamanho vertical da janela

Exemplo:
FalseWindow(64,64,400,300)*/
var xx,yy,xx1,yy1,xx2,yy2;
xx = argument0+argument2;
yy = argument1+argument3;
xx1 = 0;
yy1 = 0;
xx2 = 0;
yy2 = 0;
draw_rectangle(argument0,argument1,xx,yy,0)

if mouse_x<=argument0 then {xx1 = -mouse_x+argument0}
if mouse_y<=argument1 then {yy1 = -mouse_y+argument1}
if mouse_x+sprite_width>=xx then {xx2=-mouse_x+xx-sprite_width}
if mouse_y+sprite_height>=yy then {yy2=-mouse_y+yy-sprite_height}

if mouse_x<=xx and mouse_x+sprite_width>=argument0 and mouse_y<=yy and mouse_y+sprite_height>=argument1 {
draw_sprite_part_ext(sprite_index,-1,0+xx1,0+yy1,xx2+sprite_width-xx1,yy2+sprite_height-yy1,mouse_x+xx1,mouse_y+yy1,1,1,c_white,1)
}

draw_rectangle(argument0,argument1,xx,yy,1)

Adicione esse script e então digite no evento Draw:
FalseWindow(64,64,400,300)

E pronto. =)

Esse script foi especialmente desenvolvido para ser usado no novo Programmer que estou fazendo, onde as salas do jogo serão editadas dentro do programa, quantas salas quiser, então eu não sabia como fazer para adicionar os objetos sem que eles saissem da janela da sala, daí desenvolvi esse script =)

Na realidade, no programmer ficará assim:
http://www.4shared.com/file/197948738/2ef48365/salas.html
Obs: só postei essa engine aqui pois o próximo Programmer será completamente Open-Source xD

Eu realmente gostei do resultado, você pode mover os itens com as teclas direcionais, dá realmente o efeito do objeto estar dentro da janela.

Valeu! o/
Froidz
Froidz

Data de inscrição : 03/08/2008
Reputação : 4
Número de Mensagens : 1053
Prêmios : Tutorial - Janela Falsa 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

Tutorial - Janela Falsa Empty Re: Tutorial - Janela Falsa

Mensagem por CPinheiro Sex 15 Jan 2010, 19:25

Perfeito!
Exatamente como eu falei. Só faltou deixar o sprite pra ser escolhido também por argumento, sem ter que ser obrigatoriamente o sprite do objeto atual. =)

Na verdade, qualquer um poderia pegar e modificar isso pro seu jogo, mas como os iniciantes normalmente não tem noção de como fazer isso, é bom deixar tudo perfeitinho.
CPinheiro
CPinheiro

Data de inscrição : 01/06/2008
Reputação : 0
Número de Mensagens : 1015
Prêmios : Tutorial - Janela Falsa 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

http://supermariobrasileiro.blogspot.com

Ir para o topo Ir para baixo

Tutorial - Janela Falsa Empty Re: Tutorial - Janela Falsa

Mensagem por dungeon333 Ter 30 Mar 2010, 17:13

tem oturo geito tbm
no create
Código:

surf = surface_create(300,300)
surface_set_target(surf) // desenhar na surf
draw_sprites // desenhamos os sprites
surface_reset_target() // voltamos a desenhar na tela
no draw
Código:

draw_surface(surf,x,y) // desenhamos a surface na posiçao x e y
avatar
dungeon333

Data de inscrição : 29/05/2009
Reputação : 0
Número de Mensagens : 351
Prêmios : Tutorial - Janela Falsa 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

Tutorial - Janela Falsa Empty Re: Tutorial - Janela Falsa

Mensagem por Kevin Ter 30 Mar 2010, 17:57

Bem Legal Esse Tutorial ;)

bem... mais tenho uma pergunta... tem como fazer esse mesmo esquema só que Desenhando um texto?

VLW ae pessoal ;)
Kevin
Kevin

Games Ranking : Nota C

Notas recebidas : C - C
Data de inscrição : 14/11/2008
Reputação : 9
Número de Mensagens : 1166
Prêmios : Tutorial - Janela Falsa Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

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

http://www.programaCODM.webs.com/

Ir para o topo Ir para baixo

Tutorial - Janela Falsa Empty Re: Tutorial - Janela Falsa

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