Conectar-se
Quem está conectado
29 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 29 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Saber quantos obj estão em colisão com outro

em Sab 29 Set 2012, 15:31
Aew galera!!!

Gostaria de saber algum jeito de saber quantos objetos estão em colisão com um objeto com uma variável true

ex: tenho vários objetos em colisão mas quero saber quantos objetos estão em colisao com a variavel ativado=true
avatar
Ranking : Nota D
Notas recebidas : D-C
Data de inscrição : 10/10/2010
Número de Mensagens : 582
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Sab 29 Set 2012, 15:35
Tenta o seguinte código:
Código:


with (all)
{
      if ativado=true and ja_adicionou=false
      {
      global.quantos_em_colisao+=1
      }
}

A variavel ja_adicionou é para não ficar adicionando infinitamente.
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Sab 29 Set 2012, 16:47
Código:
total = 0;

with(all)
{
if (object_index != other.object_index)
if (place_meeting(x, y, other))
if (ativado)
total += 1;
}

Esse código pode ser posto em qualquer evento.
Coloque antes de outros códigos que usam a variável.

Obs: talvez você não colocou a variável em todos os objetos, então em vez de all, coloque o nome do parent [dos objetos] que a possuem ou mesmo o nome de um [objeto] específico.
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Sab 29 Set 2012, 17:28
Éo seguinte, estou fazendo um jogo de campo minado e to tentando adicionar o numero de bombas em volta dos quadrados mas como são 81 objetos iguais nao esta dando certo, como poderia botar quantas bombas tem em volta dos quadradinhos?

Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Sab 29 Set 2012, 17:31
Código:
total = 0;

with(bomba)
{
if (distance_to_object(other) < 5)
if (ativado)
total += 1;
}

Algo assim resolverá.
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Sab 29 Set 2012, 22:23
Pedro

Nao existe 2 tipos de objetos, sao todos iguais mas com um variavel mostrando que é uma bomba, tambem os quadrados ficam em grade sendo que tem nas suas diagonais e como que fica a distancia sendo assim?
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Sab 29 Set 2012, 22:41
Código:
e = position_meeting(bbox_left-1, y, nome_do_objeto).ativado;
d = position_meeting(bbox_right+1, y, nome_do_objeto).ativado;
c = position_meeting(x, bbox_top-1, nome_do_objeto).ativado;
b = position_meeting(x, bbox_bottom+3, nome_do_objeto).ativado;
ec = position_meeting(bbox_left-1, bbox_top-1, nome_do_objeto).ativado;
eb = position_meeting(bbox_left-1, bbox_bottom+1, nome_do_objeto).ativado;
dc = position_meeting(bbox_right+1, bbox_top-1, nome_do_objeto).ativado;
db = position_meeting(bbox_right+1, bbox_bottom+1, nomedoobjeto).ativado;

total= c + d + e + b + dc + db + eb + ec;

Nessa eu me confundi tanto que não tenho certeza se vai funcionar.

Até mais!
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Sab 29 Set 2012, 23:05
Pedro

Obrigado por responder, mas da dando que a variavel não esta declarada mas ela esta, o que poderia ser?
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Sab 29 Set 2012, 23:21
Especifique melhor o problema.
Fale onde estão colocados os códigos, quais objetos estão inclusos, etc;
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Sab 29 Set 2012, 23:28
CREATE

Código:
image_speed=0
image_index=5

bomba=false
perto=0
add=0
aberto=false
STEP

Código:
var i;

if global.bomba < global.pbomba
  {
  i=round(random_range(1,10))
  if i=1 {bomba=true; global.bomba+=1}
  }

if global.bomba = global.pbomba{
e = position_meeting(bbox_left-1, y, object0).bomba;
d = position_meeting(bbox_right+1, y, object0).bomba;
c = position_meeting(x, bbox_top-1, object0).bomba;
b = position_meeting(x, bbox_bottom+3, object0).bomba;
ec = position_meeting(bbox_left-1, bbox_top-1, object0).bomba;
eb = position_meeting(bbox_left-1, bbox_bottom+1, object0).bomba;
dc = position_meeting(bbox_right+1, bbox_top-1, object0).bomba;
db = position_meeting(bbox_right+1, bbox_bottom+1, object0).bomba;

perto= c + d + e + b + dc + db + eb + ec}
E ta dando

___________________________________________
ERROR in
action number 1
of Step Event
for object object0:

Error in code at line 10:
e = position_meeting(bbox_left-1, y, object0).bomba;
^
at position 48: Unknown variable bomba
Sendo que como tu pode ver a variavel esta declarada
avatar
Ranking : Nota D
Notas recebidas : D - C - D - C
Data de inscrição : 14/05/2009
Número de Mensagens : 712
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 7

Prêmios
   : 0
   : 0
   : 1
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Dom 30 Set 2012, 10:50
o erro é que global.bomba, não é a mesma coisa que bomba, pro Game Maker são duas váriaveis diferentes, basta declarar, global.bomba.
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Dom 30 Set 2012, 12:04
Thiago_o_programador

Obrigado por responder, mas não é isso porque global.bomba serve pra saber quantas bombas estão criadas e a bomba serve pra ver se o quadradinho tem bomba
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 30/07/2011
Número de Mensagens : 928
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 0
   : 0
   : 1
Ver perfil do usuáriohttp://luizpontes.tk/

Re: Saber quantos obj estão em colisão com outro

em Dom 30 Set 2012, 12:26
Acho que não, acho que é porque o Game Maker tem um probleminha com funções usadas por ID. Tem que colocar parênteses. Tente isto, por exemplo:
Código:
e = (position_meeting(bbox_left-1, y, object0)).bomba;
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Dom 30 Set 2012, 12:26
Só que não é recomendado usar variáveis globais com o mesmo nome que locais. O interpretador buga. Use nomes diferentes. Coloque um "s" no final.

Até mais!
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Dom 30 Set 2012, 12:36
luiz_eldorado

Tentei isso e não funcionou

Pedrø

Troquei o nome mas continua o erro

Aqui ta o link da engine https://docs.google.com/open?id=0B3LC7hHm2MU6T19FVkVDeHR1emc
avatar
Ranking : Sem avaliações
Notas recebidas : B
Data de inscrição : 28/02/2012
Número de Mensagens : 1908
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 1
Reputação : 80

Prêmios
   : 2
   : 2
   : 1
Ver perfil do usuáriohttp://guitarmester.no.comunidades.net/index.php?pagina=19362978

Re: Saber quantos obj estão em colisão com outro

em Dom 30 Set 2012, 12:58
TheGuitarMester entra em Ação!!! Fight! Brincadeira!

Vou Editar a Engine e Solucionar a Questão.

computador

14:05
vou começar a editá-la


Última edição por theguitarmester em Dom 30 Set 2012, 14:05, editado 1 vez(es)
avatar
Data de inscrição : 24/10/2009
Número de Mensagens : 873
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 14

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://inprovise.blogspot.com/

Re: Saber quantos obj estão em colisão com outro

em Dom 30 Set 2012, 13:49
tente isto:
Código:
var i;

if global.bombas < global.pbomba
  {
  i=round(random_range(1,10))
  if i=1 {bomba=true; global.bombas+=1}
  }

if global.bombas = global.pbomba{
e = position_meeting(bbox_left-1, y, object0)=bomba;
d = position_meeting(bbox_right+1, y, object0)=bomba;
c = position_meeting(x, bbox_top-1, object0)=bomba;
b = position_meeting(x, bbox_bottom+3, object0)=bomba;
ec = position_meeting(bbox_left-1, bbox_top-1, object0)=bomba;
eb = position_meeting(bbox_left-1, bbox_bottom+1, object0)=bomba;
dc = position_meeting(bbox_right+1, bbox_top-1, object0)=bomba;
db = position_meeting(bbox_right+1, bbox_bottom+1, object0)=bomba;

perto= c + d + e + b + dc + db + eb + ec}
Aqui deu certo!

Edit:
Ih, foi malz The! Ah eu também quero mostrar que soy util!

Só adicionei = ao invez do ponto!
avatar
Ranking : Sem avaliações
Notas recebidas : B
Data de inscrição : 28/02/2012
Número de Mensagens : 1908
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 1
Reputação : 80

Prêmios
   : 2
   : 2
   : 1
Ver perfil do usuáriohttp://guitarmester.no.comunidades.net/index.php?pagina=19362978

Re: Saber quantos obj estão em colisão com outro

em Dom 30 Set 2012, 14:18
Vi o jogo que você está Fazendo um "Campo Minado", tive que exluir a parte que está em Vermelho:
e = position_meeting(bbox_left-1, y, object0).bomba;
d = position_meeting(bbox_right+1, y, object0).bomba;...
isto é, o ".bomba". tive que excluí porque tava trancando, o Code estava Formatado errado.

Sabendo o Jogo que você está a cria, irei arrumar sua engine. baseado no "Campo Minado".

Editando-a computador ...

___________________15:32
Pronta a Engine arrumada:
4shared.com/file/pA_kgoed/Mina__editado_por_TheGuitarMes.html

Seus Codes(os que você utilizou) Não Estão Muito bons, ele pode melhorado, eu os Mantive, Fiz apenas o que pediu, descobrindo a colisção das bombas, mas havia outras maneiras mais fáceis e Melhores de se Fazer.
se quizer, eu posso fazer para que quando clicar em um Quadrado vazio(sem colisão de bombas), ele ache os outros de seus lados que tambem são vazios(como o Campo minado do Windows), é só pedir.
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: Saber quantos obj estão em colisão com outro

em Seg 01 Out 2012, 13:32
theguitarmester

Funcionou perfeitamente, sobre fazer o sistema de abrir os outros quadrados não presisa porque esse jogo é mais para aprendizado mesmo mas sobre o medoto mais eficiente de fazer a descoberta das bombas eu aceito!
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum