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

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 10/05/2011
Número de Mensagens : 92
Insígnias de JAM :

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

Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Qui 09 Jun 2011, 23:07
Como eu faço para em 3 segundos a tela ficar toda preta, e onde eu clicar, somente onde eu clicar, essa parte da tela (um círculo com raio de 8 pixels) ficar como estava antes de ficar preta?


Última edição por Knonick em Sex 10 Jun 2011, 00:00, editado 1 vez(es)
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 26/09/2010
Número de Mensagens : 270
Insígnias de JAM :

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

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Qui 09 Jun 2011, 23:24
Crie um background preto com qualquer dimensão.
Agora vá na aba background na room e marque a opção 'visible when room starts' e a opção 'Stretch', não selecione o background criado.
Agora crie um objeto e coloque o seguinte script.
//CREATE
alarm[0] = room_speed * 3;
//ALARM [0]
background_index[0] = nome_background_criado;
//DRAW
if (mouse_check_button(mb_left))
{
if (background_index[0] == nome_background_criado)
{
draw_circle_color(mouse_x,mouse_y,16,background_color,background_color,0);
}
}

Pronto agora teste e enquanto você estiver clicando ele irá mostrar um circulo onde terá a cor do background.
flw
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Qui 09 Jun 2011, 23:27
Desenha uma surface do tamanho da tela, toda preta, num objeto de depth mais baixa. Desenhe ela em alpha crescente, de modo que leve 3 segundos pra chegar a 1 (a velocidade deverá ser 1/(3*room_speed)). Depois, onde clicar, você altera essa surface, subtraindo um círculo de raio 16.
Informações mais aprofundadas no meu tutorial de surfaces (link na assinatura).
avatar
Data de inscrição : 10/05/2011
Número de Mensagens : 92
Insígnias de JAM :

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Qui 09 Jun 2011, 23:59
Carlos, o seu funcionou, mas não do jeito que eu queria. Queria que o preto ficasse em cima de tudo na tela, até os objetos. E outra coisa, a room tem background que é uma imagem, e o círculo só é criado, se o background da room for uma só cor. E por último, queria que o circulo criado não sumisse quando eu soltasse o botão esquerdo do mouse. E uma pequena correção, o círculo que quero não tem raio de 16 pixels, e sim 8 pixels (escrevi errado no tópico).

Saim, li o tutorial, mas não entendi direito o que é uma surface.
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sex 10 Jun 2011, 08:35
Ou, em outras palavras, "seu tutorial não serve pra nada!". Tudo bem, vamos por partes.
Uma surface é uma pintura. Tipo uma sprite, mas fácil de alterar. Ela pode ser do tamanho que você quiser e você quer ela do tamanho da tela. Ela pode conter o que você quiser e você quer que ela contenha um retângulo preto com uns buracos transparentes.
Primeiro, você cria a surface e dá um nome pra ela. Eu adoro chamar surfaces de "Surf". Depois você deixa ela toda preta.
create:
Código:
Surf=surface_create(room_width, room_height)
surface_set_target(Surf)
draw_clear_alpha(c_black, 1)
surface_reset_target()
Daí, toda vez que você clica, abre um buraco nela. Pode ser feito no global_mouse_pressed ou no step. Eu gosto do step:
Código:
if mouse_check_button_pressed(mb_left){
   surface_set_target(Surf)
   draw_set_blend_mode(bm_subtract) //passa a remover ao invés de desenhar
   draw_circle_color(mouse_x, mouse_y, 8, c_white, c_white, 0)//verifique a ordem dos argumentos
   draw_set_blend_mode(bm_normal) //volta a desenhar ao invés de remover
   surface_reset_target()
   }
E, claro, desenha a surface no draw:
Código:
draw_surface(0, 0, Surf)
avatar
Data de inscrição : 10/05/2011
Número de Mensagens : 92
Insígnias de JAM :

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sex 10 Jun 2011, 09:59
Eu não quis falar mal do seu tutorial, só quis dizer que ficou um pouco confuso para mim (não sei se foi porque eu estava com sono).
E sobre essa mini explicação (que eu entendi), funcionou perfeitamente, só preciso que quando eu arrastar o mouse segurando o botão, continuasse criando os círculos transparentes.

---EDIT---

Já consegui, mudei o mouse_check_button_pressed para mouse_check_button, mas quando eu arrasto o mouse rapidamente, os círculos criados ficam separados, queria que ficassem juntos. Créditos garantidos no meu jogo.
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sex 10 Jun 2011, 10:48
@Knonick escreveu:Eu não quis falar mal do seu tutorial, só quis dizer que ficou um pouco confuso para mim (não sei se foi porque eu estava com sono).
E eu não estava reclamando também. É que eu esqueço que teclado não tem tom de voz. Eu estava fazendo piada. Tá, eu não sou muito bom nisso...
Agora, quanto aos círculos separados... O problema é mais complexo. O lance é que o mouse não faz um caminho que passa por todos os pontos, ele pula de onde ele estava pra onde ele está, o que dá essa impressão de surface com catapora. Você poderia interpolar entre esses pontos e repetir o círculo um número suficientemente grande de vezes pra dar a impressão de que o movimento é contínuo, mas pra isso, você precisa armazenar uma variável pra onde o mouse estava no step anterior. E ao clicar o mouse (evento mouse_check_button_pressed), essa variável tem que ser modificada pra onde o mouse está nesse instante, senão vai dar uma zicazinha.
Posso fazer uma enginezinha, se você quiser.
avatar
Data de inscrição : 10/05/2011
Número de Mensagens : 92
Insígnias de JAM :

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sex 10 Jun 2011, 10:56
@saim escreveu:E eu não estava reclamando também. É que eu esqueço que teclado não tem tom de voz. Eu estava fazendo piada.
Ah bom, então assim sim.

E quanto ao que você falou, é melhor fazer uma engine mesmo, pois ainda sou muito novato para entender tudo que você disse.
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sex 10 Jun 2011, 11:02
Ei-la!

create:
Código:
mxp=mouse_x //mouse_x_previous
myp=mouse_y //mouse_y_previous
int=10 //número de interpolações
//cria a surface preta, como antes
step alternativa 1 (mais fácil de programar e mais pesada pro computador):
Código:

if mouse_check_button(mb_left){
   surface_set_target(Surf)
   draw_set_blend_mode(bm_subtract)
   var i, dir, dist;
   dir =point_direction(mxp, myp, mouse_x, mouse_y)
   dist=point_distance (mxp, myp, mouse_x, mouse_y)/int
   for(i=0; i<=int; i+=1){ //não tenho certeza se é <= ou só <
      draw_circle_color(mxp+lengthdir_x(dist*i, dir), myp+lengthdir_y(dist*i, dir), 8, c_white, c_white, 0)
      }
   draw_set_blend_mode(bm_normal)
   surface_reset_target()
   }
//agora, no final do step, atualiza o mxp/myp
mxp=mouse_x
myp=mouse_y
step alternativa 2 (levemente mais duro de programar e um pouquinho de nada mais leve pro computador):
Código:
if mouse_check_button_pressed(mb_left){
   mxp=mouse_x
   myp=mouse_y
   }
if mouse_check_button(mb_left){
   surface_set_target(Surf)
   draw_set_blend_mode(bm_subtract)
   var i, dir, dist;
   dir =point_direction(mxp, myp, mouse_x, mouse_y)
   dist=point_distance (mxp, myp, mouse_x, mouse_y)/int
   for(i=0; i<=int; i+=1){ //não tenho certeza se é <= ou só <
      draw_circle_color(mxp+lengthdir_x(dist*i, dir), myp+lengthdir_y(dist*i, dir), 8, c_white, c_white, 0)
      }
   draw_set_blend_mode(bm_normal)
   surface_reset_target()
   //atualiza mxp/myp só se o mouse estiver apertado
   mxp=mouse_x
   myp=mouse_y
   }

Edit: Hei, testei aqui, o efeito é bem legal!


Última edição por saim em Sex 10 Jun 2011, 11:17, editado 1 vez(es)
avatar
Data de inscrição : 10/05/2011
Número de Mensagens : 92
Insígnias de JAM :

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sex 10 Jun 2011, 11:16
Não funcionou. A tela não fica preta, e quando eu clico na tela dá erro.
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sex 10 Jun 2011, 11:19
Veja o último comentário no create event. Você criou a surface? (só pegar o create event anterior e copiar/colar em algum lugar do novo create event).Ah, precisa manter o draw event, também!
avatar
Data de inscrição : 10/05/2011
Número de Mensagens : 92
Insígnias de JAM :

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sex 10 Jun 2011, 19:29
Funcionou! Ainda fica bolinhas separadas algumas vezes, mas tem que arrastar rápido para isso acontecer. Se desse para arrumar ficaria melhor. E outra coisa, queria que a tela só ficasse preta depois de 3 segundos.
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sex 10 Jun 2011, 19:53
Pra resolver o problema da velocidade, aumente a interpolação. Eu usei int=10, você pode usar 20, 30, 100, o que quiser.
Como assim, "a tela só ficasse preta depois de 3 segundos"? Ela vai escurecendo aos poucos ou leva um tempo pra aparecer a surface?
Lembre-se que você pode desenhar uma surface com alpha diferenciado usando draw_surface_ext.
avatar
Data de inscrição : 10/05/2011
Número de Mensagens : 92
Insígnias de JAM :

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sex 10 Jun 2011, 20:06
O bug da interpolação eu arrumei, e a tela é pra ir escurecendo e demorar 3 segundos para ficar preta.
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sab 11 Jun 2011, 11:29
vai aumentando o alpha aos poucos. Começa com alpha=0 e a cada step, aumente1/(3*room_speed).
avatar
Data de inscrição : 10/05/2011
Número de Mensagens : 92
Insígnias de JAM :

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sab 11 Jun 2011, 17:13
Mas como eu uso o draw_surface_ext?
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sab 11 Jun 2011, 18:12
Uma tradução:
manual escreveu:draw_surface_ext(id,x,y,xscale,yscale,rot,color,alpha) Desenha a surface na escala e rotacionada misturada com uma cor (use c_white pra não misturar) e com transparência alpha (0-1).
avatar
Data de inscrição : 10/05/2011
Número de Mensagens : 92
Insígnias de JAM :

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sab 11 Jun 2011, 18:13
Mas o que é xscale, yscale e rot?
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sab 11 Jun 2011, 18:38
As escalas (com relação a x e y) e rotação. Pra não mexer nelas, coloque 1, 1 e 0.
avatar
Data de inscrição : 10/05/2011
Número de Mensagens : 92
Insígnias de JAM :

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

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

em Sab 11 Jun 2011, 20:56
Tentei de várias formas fazer a tela escurecer, mas não consegui. Poderia me explicar melhor como fazer?
Conteúdo patrocinado

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?

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