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

» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28

» 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

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


[resolvido] Deixar peça embaixo

3 participantes

Ir para baixo

[resolvido] Deixar peça embaixo Empty [resolvido] Deixar peça embaixo

Mensagem por saim Ter 20 Dez 2011, 11:05

Estou fazendo um quebra-cabeças e tendo dificuldades ao soltar as peças. Eu quero que, ao soltar, elas fiquem embaixo das demais. Pra arrastar, eu tenho uma variável, draggin, que mudo de true pra false conforme seja pra peça seguir ou ignorar o mouse.
No evento left_release (ou seja, só funciona quando o mouse está sobre a peça), eu coloco o seguinte (resumidamente):
Código:
with (objPiece){
   if draggin == true{
        depth = 1;
        }
        else{
            depth = 0;
            }
   }
E isso funciona desde que o mouse esteja apenas sobre a peça que está se movimentando. Se ele estiver sobre uma outra peça, a depth da peça que eu solto vai pra zero, não pra um e aí, ela não vai pra trás.
Estranhamente, mesmo que a id seja menor que a da peça que está abaixo, ambas estando com depth igual a zero, a peça não vai pra trás.
Alguém pode me explicar porque?


Última edição por saim em Ter 20 Dez 2011, 14:14, editado 1 vez(es)
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [resolvido] Deixar peça embaixo Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[resolvido] Deixar peça embaixo Empty Re: [resolvido] Deixar peça embaixo

Mensagem por Mr.Brum Ter 20 Dez 2011, 11:28

Qual o code que vc está usando para o objeto seguir o mouse??
Mr.Brum
Mr.Brum

Games Ranking : Nota C

Notas recebidas : D + D + C + C + D + B
Data de inscrição : 28/04/2011
Reputação : 41
Número de Mensagens : 915
Prêmios : [resolvido] Deixar peça embaixo Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

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

http://mrbrumgames.blogspot.com/

Ir para o topo Ir para baixo

[resolvido] Deixar peça embaixo Empty Re: [resolvido] Deixar peça embaixo

Mensagem por saim Ter 20 Dez 2011, 11:41

Código:
if (draggin == true){
    event_perform(ev_trigger, 1);//movePiece();
    }
mxp = mouse_x; myp = mouse_y;
Resumidamente, esse ev_trigger contém:
Código:
x += mouse_x - mxp; y += mouse_y - myp;
Estou mostrando só a versão resumida porque o resto do código se refere a uma situação em que já existem peças encaixadas, o que não é o caso. O problema ocorre em qualquer situação.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [resolvido] Deixar peça embaixo Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[resolvido] Deixar peça embaixo Empty Re: [resolvido] Deixar peça embaixo

Mensagem por Markituh Ter 20 Dez 2011, 11:49

Só pra constar saim, um objeto com depth 1 vai ficar em baixo dos que tem 0, mas um com -1 (menos um) vai ficar acima. E na condição da draggin você deixou depth 1, sendo que sua intenção era deixar a peça acima de todas.

Resumo: depth é que nem a Y, não a Z.
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : [resolvido] Deixar peça embaixo 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

Ir para o topo Ir para baixo

[resolvido] Deixar peça embaixo Empty Re: [resolvido] Deixar peça embaixo

Mensagem por saim Ter 20 Dez 2011, 12:00

Não, Markituh, o que eu quero é que, ao soltar a peça, ela vá pra baixo de todo mundo. Então, se estiver sendo arrastada (draggin = true) ela vá pra depth maior que as outras mesmo (então 1 se estiver sendo arrastada e 0 se não estiver).
Só que, quando eu solto uma peça que ESTÁ sendo arrastada ao mesmo tempo que "solto" uma que NÃO está sendo arrastada - ou seja, estou arrastando uma por cima de outra e, com o mouse sobre as duas, eu solto o botão - a depth das duas vai pra zero (eu debuguei) e não sei porque isso acontece.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [resolvido] Deixar peça embaixo Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[resolvido] Deixar peça embaixo Empty Re: [resolvido] Deixar peça embaixo

Mensagem por Markituh Ter 20 Dez 2011, 12:16

Ah, sim, erro meu. Lembro que fiz um quebra-cabeça e tive esse bug, ao menos um similiar, que quando eu estava carregando uma, se eu passasse por outra ela também ia junto Happy O que fiz foi armazenar o objeto que cliquei em uma variável para esse propósito (global, diga-se), e quando eu soltasse já não havia erro, porque eu só iria soltar aquele que eu armazenei.

Mas se por ventura a peça que estiver abaixo também for computada, seria bom checar se a variável está com um valor que não um nulo (0, false, whatever) na hora de checar se está carregando, evitando assim que você também carregue a peça de baixo junto.
Código:
// Isso vai pro evento clique do mouse
// Se estiver usando um evento próprio pra isso e não o Step, sei que você sabe adaptar.
if mouse_check_button_pressed(mb_left) and draggin == false and global.current_piece = none
{
    draggin = true;
    global.current_piece = instance_position(mouse_x, mouse_y, objPiece);
}
E no código para movimentar as X e Y do peça, por meio da "draggin", de acordo com as do mouse, você adiciona as checagens adicionais. Não sei se deu pra entender, mas se precisar posso fazer mandar um gmk mostrando isso.
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : [resolvido] Deixar peça embaixo 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

Ir para o topo Ir para baixo

[resolvido] Deixar peça embaixo Empty Re: [resolvido] Deixar peça embaixo

Mensagem por Mr.Brum Ter 20 Dez 2011, 12:32

tenta inverter os depths, parece que vc trocou eles:
Código:
with (objPiece){
  if draggin == true{
        depth = 0;
        }
        else{
            depth = 1;
            }
  }
Lembre-se que os depths menores são desenhados mais a frente na tela,e vc tinha colocado o maior depth quando o draggin estava ativado,qdo que neste momento o depth deveria ser o menor, pro objeto ficar acima dos demais.
Testa aí.
Mr.Brum
Mr.Brum

Games Ranking : Nota C

Notas recebidas : D + D + C + C + D + B
Data de inscrição : 28/04/2011
Reputação : 41
Número de Mensagens : 915
Prêmios : [resolvido] Deixar peça embaixo Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

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

http://mrbrumgames.blogspot.com/

Ir para o topo Ir para baixo

[resolvido] Deixar peça embaixo Empty Re: [resolvido] Deixar peça embaixo

Mensagem por saim Ter 20 Dez 2011, 13:45

@Markituh: não, o valor de draggin também foi debugado. Está "1" na peça que se move e "0" na peça parada, que permanece parada até que eu clique nela e ela esteja por cima (tenho uma rotina bem chatinha de se fazer só pra poder pegar a peça que está por cima, independente da depth).

@mrbrum22: Eu quero que se o valor de draggin for verdadeiro ela vá pra baixo. COMO inverter os valores poderia me ajudar?

Mocada, é o seguinte:
arrastando: a peça vai pra cima (depth = -1, já resolvi isso)
soltei: a peça que está sendo arrastada vai pra baixo de TODAS (depth = 1, mas não está ficando igual a um)
não toquei na peça: ela fica numa posição qualquer em relação às outras (depth = 0, já resolvi também).

Edit: Pfff... É exatamente isso! Rodo o código na peça com draggin = true, o depth dela vai pra 1 E o draggin, pra false. Depois rodo na outra instância e como o draggin da primeira é false, o depth vai pra 0 também!
Agora é achar um jeito de evitar isso...

O problema está no evento de soltar o botão do mouse. Quando faço isso com duas peças sob o mouse, a depth das duas vai pra zero, quando eu esperava que a que eu estivesse arrastando fosse pra um (e a outra continasse em zero mesmo).
Teoricamente, não há erro no código. Se draggin = true, depth = 1. Simples. Mas não é o que está acontecendo, o depth está indo pra 0.
DEVE ser algum problema de ordem dos eventos - o código roda numa instância, joga pra um, depois roda de novo e joga pra zero. Só que eu não consigo imaginar onde está esse problema.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [resolvido] Deixar peça embaixo Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[resolvido] Deixar peça embaixo Empty Re: [resolvido] Deixar peça embaixo

Mensagem por Markituh Ter 20 Dez 2011, 14:03

:| ... yes Aposto muito que é a ordem dos eventos. Rapaz, não sei se vai funcionar contigo, mas tenta dar show_message após cada operação que você faz na variável, em todos os blocos de código. Geralmente faço isso no C++ para saber o porque do programa simplesmente deixar de responder depois de fazer uma operação.

De preferência (ou melhor, de obrigação), coloque qual é bloco no qual o respectivo show_message está. Aí vai ficar até que óbvio saber qual é o código que faz m%$#@
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : [resolvido] Deixar peça embaixo 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

Ir para o topo Ir para baixo

[resolvido] Deixar peça embaixo Empty Re: [resolvido] Deixar peça embaixo

Mensagem por saim Ter 20 Dez 2011, 14:14

RESOLVIDO!!!
O problema era que o código estava nas peças. Fiz isso pra facilitar, mas acabou complicando. Passei o código pra um controle que aí, não tem perigo do draggin passar pra false e o código ser rodado novamente. E, já que tenho a variável draggin e agora estou usando o evento global, nem preciso verificar se a peça está sob o mouse.
Parei de fazer o depth das outras ir pra zero, também. Faço isso quando pego uma peça, então não tem motivo pra fazer de novo ao soltar.

Obrigado pela ajuda, moçada!
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [resolvido] Deixar peça embaixo Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[resolvido] Deixar peça embaixo Empty Re: [resolvido] Deixar peça embaixo

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