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

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

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

Mensagem por Ufrarion 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

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

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

Mensagem por Luca$ 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.

Luca$

Ranking : Nota D
Número de Mensagens : 582
Data de inscrição : 10/10/2010
Notas recebidas : D-C
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

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

Mensagem por PedroX 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.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

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

Mensagem por Ufrarion 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?


Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

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

Mensagem por PedroX 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á.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

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

Mensagem por Ufrarion 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?

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

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

Mensagem por PedroX 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!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

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

Mensagem por Ufrarion 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?

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

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

Mensagem por PedroX 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;

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

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

Mensagem por Ufrarion 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

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

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

Mensagem por Thiago_o_programador 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.

Thiago_o_programador

Ranking : Nota D
Número de Mensagens : 709
Idade : 19
Data de inscrição : 14/05/2009
Notas recebidas : D - C - D - C
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://www.jogosdahora.maisblog.net

Voltar ao Topo Ir em baixo

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

Mensagem por Ufrarion 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

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

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

Mensagem por luiz_eldorado 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;

luiz_eldorado

Ranking : Nota C
Número de Mensagens : 928
Idade : 18
Data de inscrição : 30/07/2011
Notas recebidas : C
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://luizpontes.tk/

Voltar ao Topo Ir em baixo

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

Mensagem por PedroX 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!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

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

Mensagem por Ufrarion 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

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

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

Mensagem por theguitarmester 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)

theguitarmester

Ranking : Sem avaliações
Número de Mensagens : 1908
Idade : 21
Data de inscrição : 28/02/2012
Notas recebidas : B
Reputação : 80
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 2
   : 2
   : 1

http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

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

Mensagem por moisesBR 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!

moisesBR

Número de Mensagens : 873
Idade : 40
Data de inscrição : 24/10/2009
Reputação : 14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://inprovise.blogspot.com/

Voltar ao Topo Ir em baixo

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

Mensagem por theguitarmester 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:
http://www.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.

theguitarmester

Ranking : Sem avaliações
Número de Mensagens : 1908
Idade : 21
Data de inscrição : 28/02/2012
Notas recebidas : B
Reputação : 80
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 2
   : 2
   : 1

http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

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

Mensagem por Ufrarion 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!

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

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

Mensagem por Conteúdo patrocinado Hoje à(s) 06:51


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