Página 1 de 1
Interação entre instances do mesmo objecto
Enviado: Seg Out 31, 2016 2:44 pm
por Lunion4saken
Bom dia,
Gostaria de pergunta se é possivel criar alguma interação entre instances do mesmo objecto por exemplo o objecto A tem a instância A.1, A.2 e A.3 . As intancias tem de ver que estam sempre a x de distancia das outra duas( sem usar a instance_nearest e instance_furthest já que poderei usar mais de 3 instances).
Agora noutro caso, existe uma variavel true ou false e todos as instancias teram de ver se essa variavel está true ou false para cada uma das outras ou então para a mais proxima. E se for true elas aproxima-se dessa ou se for false não.
E a terceira interação que quero é o mesmo da anterior mas em vez de ser os outros a ver se a variavel está true ou false é o proprio objecto ao estar true dizer aos outros que se podem aproximar.
Obrigado
Re: Interação entre instances do mesmo objecto
Enviado: Seg Out 31, 2016 5:03 pm
por All-x
Primeira questão:
Depende do comportamento dessas instâncias, elas estão sempre livres e apenas ao aproximar que tem esse limite ou sempre há esse limite?
Segunda questão:
Você pode fazer uma varredura, mas tem que definir um critério para fazer um objeto seguir o outro, ainda é pela menor distância?
O terceiro questionamento é redundante, é a mesma coisa.
Enfim, acho que entendi mais ou menos o que você quer fazer. Faça uma experimentação: crie um objeto a parte com uma sprite de um bloco branco e coloque isso no
Create:
Código: Selecionar todos
// Torna a escolha aleatória
randomize();
// Escolhe entre true e false
ligado = choose(true, false);
// Muda de cor se esta 'ligado'
if ligado
{
image_blend = c_red;
}
E isso no
Step:
Código: Selecionar todos
// Maior distância
var distancia = 32000;
// Instância mais próxima
var maisProximo = noone;
// Percorre todas as instâncias de 'block'
for (var i =0; i < instance_number(block); i++)
{
// Guarda a isntância atual
var o = instance_find(block, i);
// Caso verifica a si mesmo pula esta etapa
if (o.id == id) continue;
// Caso a instância esteja 'ligada' e a ditância é menor
if (o.ligado == true and distance_to_object(o) < distancia)
{
// Escolhe o mais próximo
maisProximo = o;
// Define nova distância minima
distancia = distance_to_object(o);
}
}
// Caso tenha encontrado a instancia
if (instance_exists(maisProximo))
{
// Define uma distancia minima de aproximação
if distance_to_object(maisProximo) > 64
{
// Se aproxima da instância
mp_potential_step(maisProximo.x, maisProximo.y, 4, true);
}
}
Agora espalhe varias instâncias desse objeto na room e veja o resultado. Com base nisso podemos modificar e chegar ao ponto que você quer.
Os objetos se aproximam de quem é vermelho, inclusive quem é vermelho. Mantendo uma distância de 64. Ou seja, os brancos ainda conseguem ficar perto um do outro. Basta modificar as regras ao seu gosto.
FLWS!
Re: Interação entre instances do mesmo objecto
Enviado: Seg Out 31, 2016 5:38 pm
por Lunion4saken
Obrigado,
Era isso que eu queria alterei um pouco o código para que quando ligado anda-se randomicamente em vez de procurar outro instance ligado e fiz isso no step com mp_potential_step e aconteceu algo engrançado, todos vão se aproximar cada vez mais do meio e os brancos são paredes para os vermelhos.
E o gamemaker tem alguma funcionalidade que faça esses espaços automaticamente?
Agora o resto ainda tenho de testar como vou fazer para o projeto.
Re: Interação entre instances do mesmo objecto
Enviado: Seg Out 31, 2016 7:22 pm
por All-x
Lunion4saken escreveu:Obrigado,
Era isso que eu queria alterei um pouco o código para que quando ligado anda-se randomicamente em vez de procurar outro instance ligado e fiz isso no step com mp_potential_step e aconteceu algo engrançado, todos vão se aproximar cada vez mais do meio e os brancos são paredes para os vermelhos.
E o gamemaker tem alguma funcionalidade que faça esses espaços automaticamente?
Agora o resto ainda tenho de testar como vou fazer para o projeto.
Basta coloca o terceiro argumento de
mp_potential_step como
false.
Você pode tentar usar estudar as mp_grid:
Motion Planing
São movimentos feitos com base em uma grade, talvez sirva para encontrar esse espaçamento que quer.
FLWS!
Re: Interação entre instances do mesmo objecto
Enviado: Seg Out 31, 2016 8:12 pm
por Lunion4saken
Comecei a fazer o projeto usando o que me disse, mas cheguei a um problema.
Presiso de fazer a contagem de objectos que estão proximos e tem a variavel = true, sendo que todos os outros, ou muito distantes ou com a variável false não sejam contados. Para depois multiplacar por um valor que decrece.
No caso do meu projeto existem arbustos que com o tempo vão adicionando comida e coelhos que tem fome e vão aproximar-se. O problema é que não posso usar o comando instance_nearerst se houver por exemplo dois coelhos a comer no mesmo arbusto. Já que o numero de comida do arbusto diminui. O que quero é que ela diminua n vezes mais rapido conforme os n coelhos que estiver a menos de x distancia e estajam com a variavel fome em true. (tudo o resto já fiz)
Re: Interação entre instances do mesmo objecto
Enviado: Seg Out 31, 2016 8:50 pm
por All-x
Se tivesse falado dos arbustos e coelhos antes teria facilitado bastante kkkkkkk
Bom, vamos lá, é bem simples então, fiz um exemplo:
Exemplo - Coelhos
FLWS!
Re: Interação entre instances do mesmo objecto
Enviado: Ter Nov 01, 2016 9:55 am
por Lunion4saken
Obrigado,
Não sabia que também se pode alterar variáveis de outras instâncias.
Bem agora já funciona.
E o espaçamento que estava a falar é no código não no jogo em si. Fica um pouco confuso tudo amontoado por isso queria saber se o gamemaker tem algo que faça os espaçamentos automaticamente no código.
E como é que querias essa apliacação gmz? quando salvo só aparece a pasta em gmx
Re: Interação entre instances do mesmo objecto
Enviado: Ter Nov 01, 2016 12:32 pm
por All-x
Lunion4saken escreveu:Obrigado,
Não sabia que também se pode alterar variáveis de outras instâncias.
Bem agora já funciona.
E o espaçamento que estava a falar é no código não no jogo em si. Fica um pouco confuso tudo amontoado por isso queria saber se o gamemaker tem algo que faça os espaçamentos automaticamente no código.
E como é que querias essa apliacação gmz? quando salvo só aparece a pasta em gmx
Esse espaçamento você vai fazer com o
mp_grid, basta ler a documentação, é bem simples.
Para criar o gmz é só Clicar em
File -> Expor Project.
FLWS!
Re: Interação entre instances do mesmo objecto
Enviado: Ter Nov 01, 2016 5:34 pm
por Lunion4saken
Secalhar é melhor demostrar o que queria dizer com espaçamento:
Código: Selecionar todos
If variavel= true {
if variavel2=false{
variavel3=false
}
}
para
if variavel=true{
if variavel2=false{
variavel3=false
}
}
A minha pergunta do espaçamento era se o gamemaker tem alguma funcionalidade que faz com que aqueles espaços façam automaticamente?
Re: Interação entre instances do mesmo objecto
Enviado: Ter Nov 01, 2016 5:43 pm
por All-x
Lunion4saken escreveu:Secalhar é melhor demostrar o que queria dizer com espaçamento:
If variavel= true {
if variavel2=false{
variavel3=false
}
}
para
if variavel=true{
if variavel2=false{
variavel3=false
}
}
A minha pergunta do espaçamento era se o gamemaker tem alguma funcionalidade que faz com que aqueles espaços façam automaticamente?
Não, a identação não é automática. Espero que isso mude na nova versão que vai sair esse mês.
FLWS!