Login
Últimos assuntos
» Não consigo baixar um jogo no YoYo Games --' por baraodopirapora Hoje à(s) 12:07 am
» MOUSEkey - Rodando no Android!
por Super Maker Ontem à(s) 11:56 pm
» Quero criar um jogo de RTS, parecido com o Outlive
por jpcms Ontem à(s) 11:29 pm
» Mundo infinito?
por Pedrø Ontem à(s) 11:28 pm
» [HTML5][Minilib] Movimento, sprites, colisão
por Pedrø Ontem à(s) 11:26 pm
» GMBR Nos Celulares
por kapoty Ontem à(s) 9:39 pm
» A - NameLess
por showeidek Ontem à(s) 9:03 pm
» [CQ #13] - Futuro
por Pedrø Ontem à(s) 8:48 pm
Como fazer a tela ficar toda preta e voltar ao normal onde clica?
Página 1 de 2 • Compartilhe •
Página 1 de 2 • 1, 2 
Como fazer a tela ficar toda preta e voltar ao normal onde clica?
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 Jun 10, 2011 12:00 am, editado 1 vez(es)

Knonick- Membro

- Alerta:




Número de Mensagens: 93
Idade: 13
Data de inscrição: 10/05/2011
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
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.

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.
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.

Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
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).
Informações mais aprofundadas no meu tutorial de surfaces (link na assinatura).
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
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.
Saim, li o tutorial, mas não entendi direito o que é uma surface.

Knonick- Membro

- Alerta:




Número de Mensagens: 93
Idade: 13
Data de inscrição: 10/05/2011
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
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:
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()
- 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()
}
- Código:
draw_surface(0, 0, Surf)
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
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.
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.

Knonick- Membro

- Alerta:




Número de Mensagens: 93
Idade: 13
Data de inscrição: 10/05/2011
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
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...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).
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.
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
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.

Knonick- Membro

- Alerta:




Número de Mensagens: 93
Idade: 13
Data de inscrição: 10/05/2011
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
Ei-la!
create:
Edit: Hei, testei aqui, o efeito é bem legal!
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
- 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
- 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 Jun 10, 2011 11:17 am, editado 1 vez(es)
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
Não funcionou. A tela não fica preta, e quando eu clico na tela dá erro.

Knonick- Membro

- Alerta:




Número de Mensagens: 93
Idade: 13
Data de inscrição: 10/05/2011
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
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!
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
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.

Knonick- Membro

- Alerta:




Número de Mensagens: 93
Idade: 13
Data de inscrição: 10/05/2011
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
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.
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.
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
O bug da interpolação eu arrumei, e a tela é pra ir escurecendo e demorar 3 segundos para ficar preta.

Knonick- Membro

- Alerta:




Número de Mensagens: 93
Idade: 13
Data de inscrição: 10/05/2011
Re: Como fazer a tela ficar toda preta e voltar ao normal onde clica?
vai aumentando o alpha aos poucos. Começa com alpha=0 e a cada step, aumente1/(3*room_speed).
Página 1 de 2 • 1, 2 
Tópicos similares» Jogos com tela branca, como resolver isso?
» Como Fazer Parceria Conosco
» [Tutorial] Como fazer Cordas, cabos e fios
» Como Fazer para hospedar o habbo na equipe crazzy?
» Onde criar um fórum gratis de qualidade e com novidades?
» Como Fazer Parceria Conosco
» [Tutorial] Como fazer Cordas, cabos e fios
» Como Fazer para hospedar o habbo na equipe crazzy?
» Onde criar um fórum gratis de qualidade e com novidades?
Página 1 de 2
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum
GMBR




: 0
: 0
: 0