Entrar
Últimos assuntos
» Preciso de ajudapor 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
Página 1 de 1
[resolvido] Deixar peça embaixo
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):
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?
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;
}
}
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- 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] Deixar peça embaixo
- Código:
if (draggin == true){
event_perform(ev_trigger, 1);//movePiece();
}
mxp = mouse_x; myp = mouse_y;
- Código:
x += mouse_x - mxp; y += mouse_y - myp;
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] Deixar peça embaixo
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.
Resumo: depth é que nem a Y, não a Z.
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [resolvido] Deixar peça embaixo
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.
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- 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] Deixar peça embaixo
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 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.
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);
}
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [resolvido] Deixar peça embaixo
tenta inverter os depths, parece que vc trocou eles:
Testa aí.
- Código:
with (objPiece){
if draggin == true{
depth = 0;
}
else{
depth = 1;
}
}
Testa aí.
Re: [resolvido] Deixar peça embaixo
@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.
@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- 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] Deixar peça embaixo
:| ... 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%$#@
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- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [resolvido] Deixar peça embaixo
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!
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- 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
Tópicos semelhantes
» [[Resolvido]]Deixar zoom no jogo, mas não deixar na HUD
» [Resolvido]deixar o teto invisivel
» [Resolvido]como deixar o sol no centro da room?
» [RESOLVIDO]Como deixar tile sólida?
» [Resolvido]Como deixar objeto por cima dos outros?
» [Resolvido]deixar o teto invisivel
» [Resolvido]como deixar o sol no centro da room?
» [RESOLVIDO]Como deixar tile sólida?
» [Resolvido]Como deixar objeto por cima dos outros?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|