Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

[GM2] Como "pegar"(set) uma variável usando with

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
GhostPower
Membro
Membro
Reações: 0
Mensagens: 97

[GM2] Como "pegar"(set) uma variável usando with

Mensagem por GhostPower » Ter Ago 02, 2022 9:42 pm

Boa noite, Devs

Estou construindo um game e estou com um problema.

Tenho um objeto e clonei em 15 do mesmo, então queria quando apertar no objeto verde escolher um deles aleatoriamente e instanciar um outro objeto em cima com uma condiçao se estiver vazios.

Abaixo uma imagem para melhor entendimento:


Estou usando este código abaixo, mas sei q esta errado muita coisa.


var i = 0; usando para ser um contado e percorrer os objetos.
with(o_place)
{
if other. o_place.posicao(aqui esta o erro) = posicao
{
pega a posicao do x e y e salva em duas variavel: posicaoX e posicaoY
depois instancia o objeto estas posiçoes que salvei
}

}


Alguém sabe com faço isso? Por favor, queria fazer sem usar o array, se existir um jeito

Desde já, muito obrigado pela atenção de todos.
Anexos
img1.png
img1.png (13.12 KiB) Exibido 648 vezes

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 621
Localização: Dourados-MS

Contato:

Re: [GM2] Como "pegar"(set) uma variável usando with

Mensagem por All-x » Qua Ago 03, 2022 9:33 am

Postar o código completo ajudaria muito, até pra seguir a mesma lógica.

Enfim, o jeito mais simples é ter dois objetos obj_azul e obj_verde (Isso pra evitar usar listas, arrays ou loops dentro de loops). Depois tu pode criar um parent se quiser agrupá-los se quiser.

No evento "Mouse -> Left Pressed" do obj_verde:

Código: Selecionar todos

// Sorteia uma instância de 'obj_azul'
var i = instance_find(obj_azul, irandom(instance_number(obj_azul) - 1));

// Cria 'obj_verde' na posição do 'obj_azul'
instance_create_depth(i.x, i.y, 0, obj_verde);

// Deleta instância 'obj_azul' que estava embaixo
instance_destroy(i);
	
// Se não quiser deletar a instância 'obj_verde' anterior remova a linha abaixo
instance_destroy();
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Avatar do usuário
GhostPower
Membro
Membro
Reações: 0
Mensagens: 97

Re: [GM2] Como "pegar"(set) uma variável usando with

Mensagem por GhostPower » Qua Ago 03, 2022 6:03 pm

Boa tarde, All-x

Desculpe, mas este e todo o código que tenho, nem sabia como começar.

Cara, se eu quiser escolher o objeto entre todos seria isso?

// Sorteia uma instância de 'obj_azul'
var i = instance_find(obj_quadrado, no exe: 1,2,3,4);


Certo? numeraria cada um?

Neste caso o que mudaria se fosse parent?desempenho ou facilidade?

Se fosse no array seria mais 'pesado' ne?

Com este código ele 'varrer' todos os objetos? tenho controle de todos eles?

Muito obrigado pela ajuda, All-x.

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 621
Localização: Dourados-MS

Contato:

Re: [GM2] Como "pegar"(set) uma variável usando with

Mensagem por All-x » Qui Ago 04, 2022 2:12 pm

O ganho computacional é irrisório a depender de quantas instâncias. Tanto que só sentiria diferença no caso de haverem milhares de instâncias. Então não haveria grandes perdas de performance ao usar arrays 'pequenas' sendo percorridas.

A forma que passei foi só a mais simplista que não percorre todas as instâncias, apenas sorteia uma de 0 à n (quantidade de instâncias).

A questão do parent, só citei para caso quisesse manipular os dois tipos de uma vez. Ex: o azul e o verde sendo filhos do quadrado, caso quisesse destruir todos só usaria instance_destroy(obj_quadrado).
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Avatar do usuário
GhostPower
Membro
Membro
Reações: 0
Mensagens: 97

Re: [GM2] Como "pegar"(set) uma variável usando with

Mensagem por GhostPower » Qui Ago 04, 2022 7:34 pm

Boa noite, All-x.

Muito obrigado pelas respostas, teria como vc postar o código de percorrer todas os objetos do mesmo?

Como seria se fosse para eu colocar na posiçao desejada? Ex: 1-posiçao, 2-posiçao, etc.

Muito obrigado pela ajuda.

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes