Função para ativar objetos na view

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Função para ativar objetos na view

Mensagem por matheusco em Qua 01 Out 2014, 22:15

Tudo bem pessoal? Estou enfrentando problemas para desativar objetos fora da view e ativar quando presentes nela.

É possível colocar uma excessção para essa funções? Pois meu jogo possui instâncias que devem ser reativadas clicando, mas usando instance_activate_region ela acaba sendo ativada por estar na view.

Se não existir, alguém tem alguma ideia de como o Game Maker processa essas funções? Sabendo disso posso fazer algumas modificações nela.

matheusco

Número de Mensagens : 395
Idade : 23
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: Função para ativar objetos na view

Mensagem por WellingtonBecker em Qua 01 Out 2014, 22:36

Veja se isso que procura:
Código:

//ativa instancias dentro da view
instance_activate_region(view_xview,view_yview,view_wview,view_hview,true)

//desativa instancias fora da view
instance_deactivate_region(view_xview,view_yview,view_wview,view_hview,false,true)

WellingtonBecker

Ranking : Nota D
Número de Mensagens : 820
Idade : 35
Data de inscrição : 09/05/2013
Notas recebidas : D
Reputação : 105
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Função para ativar objetos na view

Mensagem por matheusco em Qua 01 Out 2014, 22:43

WellingtonBecker escreveu:Veja se isso que procura:
Código:

//ativa instancias dentro da view
instance_activate_region(view_xview,view_yview,view_wview,view_hview,true)

//desativa instancias fora da view
instance_deactivate_region(view_xview,view_yview,view_wview,view_hview,false,true)

Esse é o que eu usava (até descobrir um problema), mas no meu caso ela acaba ativando instâncias que eu não queria que fossem ativadas, por isso não dá pra usar esse.

A única ideia que tive até agora, que me pareceu mais viável, é dividir todo meu mapa em retângulos e colocar um "marcador" no meio de cada uma dessas áreas. Quando o jogador entrasse na área desse marcador ele ativaria os objetos específicos, ao invés de todos.

O Game Maker não tem alguma lista com todas variáveis? Arrays? Algo assim? Porque eu poderia verificar se as instâncias são diferentes das que eu não quero que ele ative (usando loop), dai só assim ativá-las.

matheusco

Número de Mensagens : 395
Idade : 23
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: Função para ativar objetos na view

Mensagem por WellingtonBecker em Qua 01 Out 2014, 22:46

Aperte F1 e ele vai abrir informações sobre todas suas funções.

WellingtonBecker

Ranking : Nota D
Número de Mensagens : 820
Idade : 35
Data de inscrição : 09/05/2013
Notas recebidas : D
Reputação : 105
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Função para ativar objetos na view

Mensagem por Isaque Onix em Qui 02 Out 2014, 00:01

ei, amigo, nao te aconselho a usar as funçoes instance_activate e instance_deactivate para objetos manipulaveis, use variaveis comuns para esse tipo de "desativaçao/ativaçao" assim, voce evita erros.
no mais, e so usar o codigo!!!

Código:
instance_deactivate_all(1)
//ativa instancias dentro da view
instance_activate_region(view_xview,view_yview,view_xview+view_wview,view_yview+view_hview,true)

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Função para ativar objetos na view

Mensagem por matheusco em Sex 03 Out 2014, 01:47

Bom, pelo jeito ninguém entendeu minha dúvida. A questão era que eu tinha objetos que, mesmo que aparecessem na view eu queria que eles permanecessem desativados (usando a função de ativar todos objetos na view, ou seja, colocar exceções).

Como resolvi: Ao invés de desativar o menu que é aberto quando clico numa mochila, mandei eles pra posições negativas, portanto eles acabam sendo desativados por estarem fora da view e são inacessíveis por estarem em posição negativa.

Para reabrirr só os trago novamente para para a posição da mochila que os ativou, fazendo com que fiquem dentro da view, sendo reativados.

Se alguém encontrar o mesmo problema, já sabe como resolver.

Abraços.

matheusco

Número de Mensagens : 395
Idade : 23
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Dica

Mensagem por Mateus O de Andrade em Sex 03 Out 2014, 08:29

Bom dia matheusco ,
Cara, não sei exatamente como funciona esta função que foi usada mas vou dar uma dica.

Aliado à função de view, você poderia usar um cursor para seu jogo. Vou exemplificar.

Veja o exemplo tosco.


Explicando a imagem use ela como cursor. O ponto vermelho seria a mascara a ser usada para as colisões.

Ficaria algo assim:

Se a mochila estiver dentro da view e extiver ocorrendo colisão entre ela e o cursor e o botão do mouse referente à abertura for pressionado
{
Ocorre a abertura da mochila
}

Se tiver 10 mochilas na view e mais 10 fora dela, só será a berta a mochila que estiver em contato com o cursor.

Espero que tenha intendido minha ideia e espero ter ajudado.

Abração cara.

Mateus O de Andrade

Ranking : Nota D
Número de Mensagens : 399
Idade : 31
Data de inscrição : 25/03/2014
Reputação : 37
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Função para ativar objetos na view

Mensagem por matheusco em Sex 03 Out 2014, 10:55

Mateus O de Andrade escreveu:Bom dia  matheusco ,
Cara, não sei exatamente como funciona esta função que foi usada mas vou dar uma dica.

Aliado à função de view, você poderia usar um cursor para seu jogo. Vou exemplificar.

Veja o exemplo tosco.


Explicando a imagem use ela como cursor. O ponto vermelho seria a mascara a ser usada para as colisões.

Ficaria algo assim:

Se a mochila estiver dentro da view e extiver ocorrendo colisão entre ela e o cursor e o botão do mouse referente à abertura for pressionado
{
Ocorre a abertura da mochila
}

Se tiver 10 mochilas na view e mais 10 fora dela, só será a berta a mochila que estiver em contato com o cursor.

Espero que tenha intendido minha ideia e espero ter ajudado.

Abração cara.


Eu já uso collision_point pra pegar a ID do objeto na posição mouse_x e mouse_y. A função funciona ativando tudo que estiver na região um pouco maior que a view (pras luzes também serem ativadas e não só acenderem quando estiverem na view.

Quando fechava a mochila eu simplesmente desativava o inventário dela, então ele continua na view e logo em seguida era reativado por essa função. Agora que mando ele pra posição negativa meus problemas foram resolvidos ;)

A sua dica não funcionaria no meu caso pois as 10 mochilas fechadas teriam perto delas inventários desativados que, assim que entrassem na minha view, seriam reativados. Mesmo assim, obrigado pela dica ;)

EDIT: Na verdade pra mochila eu só uso o Right Pressed Event, que só considera os cliques feitos em cima da instância.

matheusco

Número de Mensagens : 395
Idade : 23
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: Função para ativar objetos na view

Mensagem por Isaque Onix em Sex 03 Out 2014, 12:32

matheusco escreveu:Bom, pelo jeito ninguém entendeu minha dúvida. A questão era que eu tinha objetos que, mesmo que aparecessem na view eu queria que eles permanecessem desativados (usando a função de ativar todos objetos na view, ou seja, colocar exceções).

Como resolvi: Ao invés de desativar o menu que é aberto quando clico numa mochila, mandei eles pra posições negativas, portanto eles acabam sendo desativados por estarem fora da view e são inacessíveis por estarem em posição negativa.

Para reabrirr só os trago novamente para para a posição da mochila que os ativou, fazendo com que fiquem dentro da view, sendo reativados.

Se alguém encontrar o mesmo problema, já sabe como resolver.

Abraços.
Acho que foi voce que nao intendeu minha resposta. eu disse que voce deve usar variaveis para desativar um objeto, assim, funçoes nativas do game maker nao irao afeta-lo.
um exemplo:

create:

Código:
desativado=false

step:

Código:
if(desativado){visible=false exit}visible=true//este se repetiria em todos os eventos.
/*outros codigos*/

assim, voce desativaria um objeto sem precisar usar o instance_deactivate!

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Função para ativar objetos na view

Mensagem por matheusco em Sex 03 Out 2014, 13:55

Isaque Onix escreveu:
matheusco escreveu:Bom, pelo jeito ninguém entendeu minha dúvida. A questão era que eu tinha objetos que, mesmo que aparecessem na view eu queria que eles permanecessem desativados (usando a função de ativar todos objetos na view, ou seja, colocar exceções).

Como resolvi: Ao invés de desativar o menu que é aberto quando clico numa mochila, mandei eles pra posições negativas, portanto eles acabam sendo desativados por estarem fora da view e são inacessíveis por estarem em posição negativa.

Para reabrirr só os trago novamente para para a posição da mochila que os ativou, fazendo com que fiquem dentro da view, sendo reativados.

Se alguém encontrar o mesmo problema, já sabe como resolver.

Abraços.
Acho que foi voce que nao intendeu minha resposta. eu disse que voce deve usar variaveis para desativar um objeto, assim, funçoes nativas do game maker nao irao afeta-lo.
um exemplo:

create:

Código:
desativado=false

step:

Código:
if(desativado){visible=false exit}visible=true//este se repetiria em todos os eventos.
/*outros codigos*/

assim, voce desativaria um objeto sem precisar usar o instance_deactivate!

O problema não era desativar o objeto, mas sim ele ser reativado pela função instance_activate_region.

E acredito que a função deactivate não só deixa o objeto invisível, senão seria possível executar ações com ele mesmo desativado. Eu entendi sua solução, mas meu objetivo é seguir usando o activate/deactivate_region Happy

matheusco

Número de Mensagens : 395
Idade : 23
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: Função para ativar objetos na view

Mensagem por Conteúdo patrocinado Hoje à(s) 18:26


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum