Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
[resolvido (+-...)] mouse_press event duas vezes seguidas
+5
Carlos Mahnke
tecnologiaesites
Lauro
PedroX
saim
9 participantes
Página 1 de 1
[resolvido (+-...)] mouse_press event duas vezes seguidas
Tenho um objeto-botão que, ao ser clicado, cria uma intância de um objeto-criador-de-objetos.
Esse outro, por sua vez, no global_left_pressed, cria um novo objeto.
O problema é que ao clicar no objeto-botão, o game maker já executa o código do apertar de botão do objeto-criador-de-objetos. Gostaria de uma forma que isso não acontecesse, é possível?
Claro que eu posso verificar se o mouse está sobre o objeto-botão e só executar o código se não estiver, também posso criar o objeto com algum alarm no valor "1" e só executar o código se o alarme estiver menor que zero, mas eu gostaria de algo mais... elegante. Algo que diga ao game maker "pule o código de clicar no step em que o objeto é criado" ou "hei, deixa de ser bobo, ninguém quer criar o objeto em cima do botão!!!".
Se tivesse algum jeito da instância ser criada com um id MENOR que o objeto que a cria, estaria resolvido, mas todos sabemos que isso é impossível.
Acho que estou pedindo demais, mas costumo ser bem surpreendido nessa comunidade.
Esse outro, por sua vez, no global_left_pressed, cria um novo objeto.
O problema é que ao clicar no objeto-botão, o game maker já executa o código do apertar de botão do objeto-criador-de-objetos. Gostaria de uma forma que isso não acontecesse, é possível?
Claro que eu posso verificar se o mouse está sobre o objeto-botão e só executar o código se não estiver, também posso criar o objeto com algum alarm no valor "1" e só executar o código se o alarme estiver menor que zero, mas eu gostaria de algo mais... elegante. Algo que diga ao game maker "pule o código de clicar no step em que o objeto é criado" ou "hei, deixa de ser bobo, ninguém quer criar o objeto em cima do botão!!!".
Se tivesse algum jeito da instância ser criada com um id MENOR que o objeto que a cria, estaria resolvido, mas todos sabemos que isso é impossível.
Acho que estou pedindo demais, mas costumo ser bem surpreendido nessa comunidade.
Última edição por saim em Qua 02 Nov 2011, 20:09, editado 1 vez(es)
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Tenta isso:
- Código:
instance_create(x,y,obj_criador_objs)
mouse_clear(mb_left)
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Não funcionou, mas gostei de idéia. Vou ver se consigo dar um jeito de dizer pro computador "o botão não foi mais apertado".
Se você tiver outra idéia da sintaxe, por favor, compartilhe.
Se você tiver outra idéia da sintaxe, por favor, compartilhe.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Talvez invertendo a ordem dê certo.
Ainda tenho dúvidas sobre a ordem que o game maker usa para executar os eventos. Talvez ao criar o objeto, ele já teste o mouse e só depois volte para o código. Se não der certo, a teoria está errada.
Até mais!
Ainda tenho dúvidas sobre a ordem que o game maker usa para executar os eventos. Talvez ao criar o objeto, ele já teste o mouse e só depois volte para o código. Se não der certo, a teoria está errada.
Até mais!
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Dá pra fazer um sistema de vars.
Tipo quando o evento mouse_release acontecer, você insere um código do gênero:
clique+=1
E cria um alarm de por exemplo 10 steps.
No step, algo como:
if clique=2 {////wathever}
E no alarm 0,
clique=0
Espero que tenha ajudado =D
Tipo quando o evento mouse_release acontecer, você insere um código do gênero:
clique+=1
E cria um alarm de por exemplo 10 steps.
No step, algo como:
if clique=2 {////wathever}
E no alarm 0,
clique=0
Espero que tenha ajudado =D
Lauro- Games Ranking :
Notas recebidas : C+D
Data de inscrição : 09/11/2010
Reputação : 11
Número de Mensagens : 855
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
no create
- Código:
click = 0
- Código:
click +=1
if(click >1){
// a função que voce quer
alarm[0]=5
}
- Código:
click = 0
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
No caso se vc está criando "botões" qual o motivo de usar global mouse? Ele serve justamente pra quando o clique precisa ser computado independente do ponteiro estar ou não sobre o objeto (sprite).
Pelo que entendo da sua necessidade bastaria usar um evento de mouse sem ser global pra que o clique só seja executado quando o ponteiro estiver sobre o objeto, e consequentemente o segundo não estaria exatamente na mesma posição não é mesmo?
Pelo que entendo da sua necessidade bastaria usar um evento de mouse sem ser global pra que o clique só seja executado quando o ponteiro estiver sobre o objeto, e consequentemente o segundo não estaria exatamente na mesma posição não é mesmo?
Carlos Mahnke- Games Ranking :
Notas recebidas : A+B (não colocar conceito)
Data de inscrição : 27/07/2011
Reputação : 0
Número de Mensagens : 202
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Gente, vocês leram o que ele escreveu?
Agora, respondendo:
Coloquei no obj_Botao, no evento Left Pressed:
> if (!instance_exists(obj_Criador))
> instance_create(200, 200, obj_Criador);
> mouse_clear(mb_left);
E no obj_Criador, no Step:
> if (mouse_check_button_pressed(mb_left))
> instance_create(mouse_x, mouse_y, obj_SeiLa);
Você fez assim? O resultado saiu até melhor do que a encomenda. Isso não impede que o obj_SeiLa seja criado apenas quando o obj_Criador é criado, mas também sempre que você aperta no obj_Botao (supondo que isso seja bom).
Os dois acima do Carlos Mahnke postaram códigos envolvendo alarms, que ele disse que sabe como usar, mas não quer, e desculpem-me, mas os códigos nem fazem sentido. Ele não quer desse jeito, ele disse que quer um mais "elegante".Claro que eu posso verificar se o mouse está sobre o objeto-botão e só executar o código se não estiver, também posso criar o objeto com algum alarm no valor "1" e só executar o código se o alarme estiver menor que zero, mas eu gostaria de algo mais... elegante. Algo que diga ao game maker "pule o código de clicar no step em que o objeto é criado" ou "hei, deixa de ser bobo, ninguém quer criar o objeto em cima do botão!!!".
- Se ele quisesse desse jeito, seria simplesmente:
- Create:
criar = false;
Step:
if (mouse_check_button_pressed(...) && criar)
instance_create(...);
criar = true;
Agora, respondendo:
PEDR0 escreveu:Tenta isso:
- Código:
instance_create(x,y,obj_criador_objs)
mouse_clear(mb_left)
O que aconteceu? Aqui testei e funcionou certinho. '-'saim escreveu:Não funcionou, mas gostei de idéia. Vou ver se consigo dar um jeito de dizer pro computador "o botão não foi mais apertado".
Coloquei no obj_Botao, no evento Left Pressed:
> if (!instance_exists(obj_Criador))
> instance_create(200, 200, obj_Criador);
> mouse_clear(mb_left);
E no obj_Criador, no Step:
> if (mouse_check_button_pressed(mb_left))
> instance_create(mouse_x, mouse_y, obj_SeiLa);
Você fez assim? O resultado saiu até melhor do que a encomenda. Isso não impede que o obj_SeiLa seja criado apenas quando o obj_Criador é criado, mas também sempre que você aperta no obj_Botao (supondo que isso seja bom).
Igor KinGamer- Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Eu também concordo em fazer uma var que identifique que o mouse foi precionado uma vez e com isso, acione uma quantidade de steps que permita a segunda vez do pressionar do mouse, pra que execute o evento.
A maneira mais simples seria essa, mas o saim se tornou um usuário tão avançado que ta achando chato fazer códigos simples .
Até mais!
A maneira mais simples seria essa, mas o saim se tornou um usuário tão avançado que ta achando chato fazer códigos simples .
Até mais!
Super Maker- Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Seguinte...
tenho o obj_towerCreator, que é o botão. Nele eu tenho o seguinte código (agora) no evento de clicar:
@Carlos Mahnke: Estou usando global pro placer, não pro botão. Por enquanto, esse placer é um objeto que segue o mouse, mas estou em dúvida se mantenho assim ou se faço ele ser parte do código do objeto-botão que apenas desenha um sprite diferente, seguindo o mouse. Se eu partir pra essa segunda idéia (que provavelmente é mais rápida e mais leve), eu precisarei do global-click.
@Igor KinGamer: você colocou o clique do obj_towerPlacer no step. Estou sem o manual aqui, então peço que você dê uma verificada se o step não acontece antes dos eventos do mouse (tem uma seção chamada "order of events", no manual). Se for, você nem precisa do mouse_clear.
@Super Maker: Eu adoro códigos simples. Mas meu conceito de "simples" parece ser diferente. Pra mim, "simples" é aquilo que eu possa usar em qualquer situação. Por isso sempre procuro uma solução mais genérica: pra poder usar aquele mesmo objeto em diversos jogos completamente diferentes fazendo o mínimo de alterações possível e, o mais importante, entendendo o código que está escrito ali mesmo depois de décadas sem tocar no objeto. Já perdi MUITO tempo com códigos localizados, códigos que só servem praquela situação.
Resumindo, às vezes (simples!=óbvio && simples!=fácil)
tenho o obj_towerCreator, que é o botão. Nele eu tenho o seguinte código (agora) no evento de clicar:
- Código:
if (credits>=price[towerKind]){ // credits = global; price = global; towerKind = global;
mouse_clear(mb_left);
with (instance_create(mouse_x, mouse_y, obj_towerPlacer)){
//coisas
}
}
- Código:
se atende a condições e mais condições{
intance_create(mouse_x, mouse_y, tower[towerKind])
}
//mais um monte de coisa
@Carlos Mahnke: Estou usando global pro placer, não pro botão. Por enquanto, esse placer é um objeto que segue o mouse, mas estou em dúvida se mantenho assim ou se faço ele ser parte do código do objeto-botão que apenas desenha um sprite diferente, seguindo o mouse. Se eu partir pra essa segunda idéia (que provavelmente é mais rápida e mais leve), eu precisarei do global-click.
@Igor KinGamer: você colocou o clique do obj_towerPlacer no step. Estou sem o manual aqui, então peço que você dê uma verificada se o step não acontece antes dos eventos do mouse (tem uma seção chamada "order of events", no manual). Se for, você nem precisa do mouse_clear.
@Super Maker: Eu adoro códigos simples. Mas meu conceito de "simples" parece ser diferente. Pra mim, "simples" é aquilo que eu possa usar em qualquer situação. Por isso sempre procuro uma solução mais genérica: pra poder usar aquele mesmo objeto em diversos jogos completamente diferentes fazendo o mínimo de alterações possível e, o mais importante, entendendo o código que está escrito ali mesmo depois de décadas sem tocar no objeto. Já perdi MUITO tempo com códigos localizados, códigos que só servem praquela situação.
Resumindo, às vezes (simples!=óbvio && simples!=fácil)
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
O step é executado depois dos eventos do mouse.
Quando você cria o objeto, ele já executa o evento do mouse.
O certo seria colocar no step.
Mas antes de fazer isso, inverta a ordem, colocando o mouse_clear antes, só para ver se daria certo.
Até mais!
Quando você cria o objeto, ele já executa o evento do mouse.
O certo seria colocar no step.
Mas antes de fazer isso, inverta a ordem, colocando o mouse_clear antes, só para ver se daria certo.
Até mais!
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Não... Ele cria no evento de clicar (sem ser global) e executa o create event do objeto e aquilo que eu coloca dentro do with (instance_create)(não tenho certeza de qual vem primeiro, acho que nessa ordem mesmo). Antes do próximo clique, pelo visto, ainda dá tempo dele executar o evento global_click (o que me leva a crer que o global ocorre depois do local).PEDR0 escreveu:O step é executado depois dos eventos do mouse.
Quando você cria o objeto, ele já executa o evento do mouse.
O certo seria colocar no step.
Não entendi. Não foi isso que eu fiz? Veja lá, coloquei o mouse_clear dentro do evento do clique (local) antes de criar a instância do obj_towerPlacer. Agora, além disso, tentei colocar mouse_clear(mb_left) no create do obj_towerPlacer, que também falhou.PEDR0 escreveu:Mas antes de fazer isso, inverta a ordem, colocando o mouse_clear antes, só para ver se daria certo.
- source:
- Olha só: como estou importando os objetos, vou colocar aqui os códigos completos dos objetos pra você ter a source. Você pode copiar e colar em arquivos .obj, gravar numa pasta chamada "objects" e criar alguns arquivos .bmp 32x32 (na pasta "sprites") pra serem as sprites (ih, tem que ter os nomes certos. São "button", "placer" e "tower"). Aí, você coloca o últmo code na room create e você terá a source do jogo.
obj_controler (arquivo "controler.obj"):- Código:
object_event_add(obj_controler, ev_create, 0, '
var i;
i=0;
// on second thought, perhaps it would be interesting to make constants, those variables below
globalvar basicShooter, radialChance, poisonCauser, sprCreator, sprPlacer, basicPrice, price, tower;
basicShooter=i; sprCreator[i]=spr_ShtCreat; sprPlacer[i]=spr_ShtPlacer; basicPrice[i]= 100; price[i]= basicPrice[i]; tower[i]= obj_tower; i+=1;
radialChance=i; sprCreator[i]=spr_ChnCreat; sprPlacer[i]=spr_ChnPlacer; basicPrice[i]= 100; price[i]= basicPrice[i]; tower[i]= obj_tower; i+=1;
poisonCauser=i; sprCreator[i]=spr_PoiCreat; sprPlacer[i]=spr_PoiPlacer; basicPrice[i]= 100; price[i]= basicPrice[i]; tower[i]= obj_tower; i+=1;
// ...
nKinds=i;
hudX=0; hudY= room_height - (32* 3); hudSpacingX= 40; hudSpacingY= 25;
for(i=0; i<nKinds; i+=1){
with(instance_create(hudX+(1+i)*hudSpacingX, hudY+hudSpacingY, obj_towerCreator)){
sprite_index= sprCreator[i];
placeSprite= sprPlacer[i];
towerKind= i;
}
}
globalvar credits, tax;
credits = 350;
tax= 1.1;
globalvar gridH, gridV;
gridH= 32; gridV= 32;
')
object_event_add(obj_controler, ev_draw, 0, '
draw_rectangle(hudX, hudY, room_width, room_height, 0);
draw_text(20, 20, string(instance_number(obj_tower)));
draw_text(20, 40, string(credits));
')
- Código:
object_event_add(obj_towerPlacer, ev_create, 0,'
mouse_clear(mb_left)
')
object_event_add(obj_towerPlacer, ev_mouse, ev_global_left_press,'
var posX, posY;
posX = (mouse_x div gridH) * gridH; posY = (mouse_y div gridV) * gridV;
//if (!instance_position(mouse_x, mouse_y, obj_towerCreator)){ //solução alternativa
if (!place_meeting(posX, posY, obj_wallParent) && credits>=price[towerKind]){ // nothing on the way and money available
var newTower, goOn;
goOn = true;
newTower = instance_create(posX, posY, tower[towerKind]); // create at basic conditions. "tower" shall be a global array.
with (obj_pathmakers){ // spawners and walkers
newPath = true //AStar(parameters); // check the arguments. make a new path.
if (newPath = false){ // if can not find a path for ANY object
goOn = false;
}
}
if (goOn==true){ // if there is a path available
with (obj_walker){ // with every enemy
//path_delete(Path);
Path = newPath;
}
credits-=price[towerKind]; // pay the price
price[towerKind]=ceil(price[towerKind]*tax); // since I have no idea what value to increase, "tax" be a global. Suggestion is using 1.1.
}
else {
with (newTower){ // don not keep the tower
instance_destroy();
}
instance_create(posX, posY, obj_showBlocked); //an object that says "you can not place it here!"
}
}
// if not willing to keep placing, stop placing
if (!keyboard_check(vk_shift)){
instance_destroy();
}
// }
')
object_event_add(obj_towerPlacer, ev_step, 0,'
x = mouse_x; y = mouse_y;
')
object_event_add(obj_towerPlacer, ev_draw, 0,'
var posX, posY;
posX = (mouse_x div gridH) * gridH; posY = (mouse_y div gridV) * gridV;
draw_rectangle(posX, posY, posX+gridH, posY+gridV, 1);
draw_sprite(sprite_index, image_index, x, y);
')
- Código:
object_event_add(obj_towerCreator, ev_mouse, ev_left_press, '
if (credits>=price[towerKind]){ // credits = global; price = global; towerKind = global;
mouse_clear(mb_left);
with (instance_create(mouse_x, mouse_y, obj_towerPlacer)){ // obj_towerPlacer is the object that will actually create the tower(s)
towerKind = other . towerKind
sprite_index = sprPlacer[towerKind];
cost = price[towerKind];
}
}
')
object_event_add(obj_towerCreator, ev_draw, 0, '
if (credits>=price[towerKind]){ // if the tower is affordable
draw_sprite(sprite_index, image_index ,x, y) // custom button
}
else {
draw_sprite_ext(sprite_index, image_index ,x, y, 1, 1, 0, $ffffff, 0.5); // or draw an "X" over is or whathever
}
')
- Código:
globalvar obj_controler, obj_towerCreator, obj_towerPlacer, obj_tower, obj_pathmakers, obj_walker, obj_showBlocked, obj_wallParent;
globalvar spr_ShtCreat, spr_ShtPlacer, spr_ChnCreat, spr_ChnPlacer, spr_PoiCreat, spr_PoiPlacer, spr_tower;
obj_controler= object_add();
obj_towerCreator= object_add();
obj_towerPlacer= object_add();
obj_tower= object_add();
obj_pathmakers= object_add();
obj_walker= object_add();
obj_showBlocked= object_add();
obj_wallParent= object_add();
var MASK;
MASK=working_directory+"\objects\"
execute_file(MASK+"controler.obj")
execute_file(MASK+"towerCreator.obj")
execute_file(MASK+"towerPlacer.obj")
MASK=working_directory+"\sprites\button.bmp"
spr_ShtCreat= sprite_add(MASK, 1, 0, 0, 0, 0);
spr_ChnCreat= sprite_add(MASK, 1, 0, 0, 0, 0);
spr_PoiCreat= sprite_add(MASK, 1, 0, 0, 0, 0);
MASK=working_directory+"\sprites\placer.bmp"
spr_ShtPlacer= sprite_add(MASK, 1, 0, 0, 0, 0);
spr_ChnPlacer= sprite_add(MASK, 1, 0, 0, 0, 0);
spr_PoiPlacer= sprite_add(MASK, 1, 0, 0, 0, 0);
MASK=working_directory+"\sprites\tower.bmp"
spr_tower= sprite_add(MASK, 1, 0, 0, 0, 0);
object_set_sprite(obj_tower, spr_tower);
object_set_parent(obj_tower, obj_wallParent);
instance_create(0, 0, obj_controler);
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Tente isso:
Flws
- Código:
var in;
in = instance_create(x, y, obj_criador_objetos);
in.depth = depth + 1;
Flws
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Pra mudar a ordem de execução dos códigos das instâncias, né? É uma boa, mas tentei e não funcionou... Mesmo mudando o evento do clique do obj_towerPlacer de global pra local.
Aliás, esse truque de mudar a depth nunca funcionou comigo. Será que "depth" só é levado em conta no evento de draw?
Aliás, esse truque de mudar a depth nunca funcionou comigo. Será que "depth" só é levado em conta no evento de draw?
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Não.Aliás, esse truque de mudar a depth nunca funcionou comigo. Será que "depth" só é levado em conta no evento de draw?
Faça um teste para ver.
Crie dois objetos com diferentes sprites e mova, durante o jogo, um sobre o outro. Dependendo do id na room, um vai aparecer na frente do outro. Agora se você colocar o depth do que ficou atrás menor, então ele fica na frente.
Obs: Eu disse para você colocar o mouse_clear() antes de criar o objeto. Foi isso que você fez. Então vou dar uma conferida aqui e tento responder.
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
O truque, na verdade, é o seguinte: eu vi na outra comunidade, um sujeito que queria criar uma instância (ou várias, não lembro) mas queria que um código dentro de um "with" ocorresse nas instâncias novas antes de ocorrer nas instâncias velhas (ou vice-versa) o que não dá pra fazer, porque os eventos acontecem na ordem do número da instância. Daí, alguém sugeriu que ele mudasse o depth, porque "os códigos ocorrem primeiro nas instâncias de maior depth e, por isso, elas são desenhadas atrás das de menor depth".PEDR0 escreveu:Faça um teste para ver.
Crie dois objetos com diferentes sprites e mova, durante o jogo, um sobre o outro. Dependendo do id na room, um vai aparecer na frente do outro. Agora se você colocar o depth do que ficou atrás menor, então ele fica na frente.
O cara que estava com problema disse que o caso estava resolvido, mas eu nunca consegui reproduzir, na prática, essa teoria. Devo ter entendido alguma coisa errada ou era alguma versão diferente do game maker. Mas a impressão que eu tenho é que essa teoria funciona sim, mas só pro draw_event.
Quanto ao problema das clicadas, estou me cansando. Se você não conseguir, vou mudar o evento de criação do obj_towerPlacer pro mouse_release e morrer sem saber porque o mouse_clear não funcionou.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Se você quiser saber qual vai primeiro use as mensagens do debug mode, no clique do mouse e no Step e nos outros eventos que você quiser saber. Outra coisa pra ajudar, se você colocar no Step, ele acontece DURANTE o step e há outros dois casos, o Begin Step, que é quando ele começa e o End Step quando termina, tente tudo isso, explore ao máximo o que você tem aí, você pode até colocar uma Trigger criada por você com o código que define quando ele vale o clique e quando não vale.
y_Tiago- Data de inscrição : 13/10/2010
Reputação : 1
Número de Mensagens : 149
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [resolvido (+-...)] mouse_press event duas vezes seguidas
Ninguém descobriu porque o mouse_clear não funcionou? Droga!
Vou trancar esse tópico aqui. Se alguém souber a resposta, me manda por MP que eu peço pra reabrir e posto.
Valeu a tentativa, moçada!
Vou trancar esse tópico aqui. Se alguém souber a resposta, me manda por MP que eu peço pra reabrir e posto.
Valeu a tentativa, moçada!
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos