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
» player não consegue andar
por 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] 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