GameMaker Studio 2: Como colocar um array no objeto clone

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
GhostPower
Membro
Membro
Mensagens: 92

GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por GhostPower » Sáb Out 03, 2020 12:30 pm

Boa tarde
Maker,

Agora estou fazendo o inventário usando array em um objeto chamado slot.

Neste objeto(slot) tenho um codigo simples de receber o objeto(item) quando ele colidir com a item.

Olhe abaixo o codigo:

Colisao com o objeto(item)

Código: Selecionar todos

if slotEmpty
{
	slotSave[0,0] = other.item;
}
Perceba que estou usando o array de linha e colunas para fazer o inventario.

Tenho este objeto duplicado na room para adicionar cada posiçao :

slotSave = [0,0] -- Objeto(slot)
slotSave = [0,1] -- Objeto(slot) duplicado.
slotSave = [0,2] -- Objeto(slot) duplicado.
...

Assim por diante. Com faço isso sendo q nao consigo manipular as colisoes de cada objetos clonados? Tem outras formas de fazer o inventario com um unico objeto para armazenar cada posiçao?

Obs: Nao quero usar "ds_list".

Obrigado pela ajuda.

Chuaschinai
Colaborador
Colaborador
Mensagens: 148

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por Chuaschinai » Sáb Out 03, 2020 6:56 pm

Não entendi muito bem, você quer ter um objeto só para gerenciar todos os slots?

Avatar do usuário
GhostPower
Membro
Membro
Mensagens: 92

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por GhostPower » Sáb Out 03, 2020 7:21 pm

Boa noite
grononmc,

Isso e este objeto vou duplicar ele para cada um armazenar uma posiçao no array

Tem com fazer isso? tem outras opçoes?

Muito obrigado

Chuaschinai
Colaborador
Colaborador
Mensagens: 148

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por Chuaschinai » Sáb Out 03, 2020 7:39 pm

Ta, pelo que entendi na questão de colisão do slot, seria com o mouse quando passasse por cima?, se for isso basta usar um função chamada, point_in_rectangle para checar se o mouse esta dentro deste slot.

Código: Selecionar todos

var _mouse_on_slot = point_in_rectangle(mouse_x, mouse_y, bbox_left, bbox_top, bbox_right, bbox_bottom);
if(mouse_check_button(mb_left) && _mouse_on_slot) {
    // Faz alguma coisa
}
Ele vai retornar true para a variável se o mouse estiver dentro do slot, assim você pode manipular slots duplicados.
Você pode tambem usar um Event->Mouse Enter e Mouse Leave, para saber se o mouse esta dentro do objeto.

Não sei se é realmente isso que você quer.

Avatar do usuário
GhostPower
Membro
Membro
Mensagens: 92

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por GhostPower » Dom Out 04, 2020 2:41 pm

Boa tarde
grononmc,

Entao cara, a parte de colisao ja sabia fazer.

Como sao objetos duplicado nao consigo fazer isso para cada objeto na room porque nao tenho esta opçao, ou consigo?

Obrigado pela ajuda.

Chuaschinai
Colaborador
Colaborador
Mensagens: 148

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por Chuaschinai » Dom Out 04, 2020 4:03 pm

No Gamemaker, cada objeto independente de ser duplicado, possui um ID único quando você cria ele, se você usar o Event->Mouse Enter(mouse entra no objeto) e Event->Mouse Leave(mouse sai do objeto), e colocar o código que necessita la, todos os objeto duplicados iram se comportar da mesma maneira, dai não precisa fazer para cada um.

Avatar do usuário
GhostPower
Membro
Membro
Mensagens: 92

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por GhostPower » Dom Out 04, 2020 5:18 pm

Boa Tarde
grononmc

Entao como faço isso, ex:
...
Evento Objeto original

if colidir com o item entao
slot[0,0] = other;
fim do if


Copia do objeto
if colidir com o item entao
slot[0,1] = other;
fim do if
...
Tenho 10 copia dele, so consigo ver a colisao do original.

Ou e melhor fazer 10 objeto e ai consigo ver cada colisao? ou faço com um objeto controlador?

Qual e a melhor maneira?

Obrigado.

Chuaschinai
Colaborador
Colaborador
Mensagens: 148

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por Chuaschinai » Dom Out 04, 2020 6:53 pm

Cria uma variável chamada uid nos slots, e numere eles de 0 a 9, quando colidir faça assim:

if colidir com o item entao
slot[0, uid] = other;
fim do if

Assim ele salvará com o uid respectivo do slot, pelo que entendi é isso.

Avatar do usuário
GhostPower
Membro
Membro
Mensagens: 92

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por GhostPower » Ter Out 06, 2020 8:44 pm

Boa noite
grononmc,

Blz, testarei isso, mas existe um jeito do objeto controlar o inventario de uma maneira mais facil?

Obrigado pela ajuda.

Chuaschinai
Colaborador
Colaborador
Mensagens: 148

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por Chuaschinai » Ter Out 06, 2020 9:18 pm

Normalmente quando faço inventário, uso um objeto de Controle, e somente desenho os slots com o Draw Gui, somente usando array, e ou ds_list, eu recomendo se for um Quick Inventory(inventário de acesso rápido), usar ds_list, pois é sempre mais fácil de manipular, e agora com a nova versão do Gamemaker é ainda mais prático de acessá-los.

Avatar do usuário
GhostPower
Membro
Membro
Mensagens: 92

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por GhostPower » Qui Out 08, 2020 7:51 pm

Boa noite
grononmc,

Cara, sem colisao? Podeira mostra um exemplo simples?

Muito obrigado.

Chuaschinai
Colaborador
Colaborador
Mensagens: 148

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por Chuaschinai » Qui Out 08, 2020 9:16 pm

Não entendi, você quer que o slot faça a colisão com o item?, eu estava achando que os slots eram fixos e quem colidia com os itens era o personagem, se for isso te mando um exemplo.

Avatar do usuário
GhostPower
Membro
Membro
Mensagens: 92

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por GhostPower » Sáb Out 10, 2020 7:55 am

Bom dia
grononmc,

Pensei que nao existia outra forma de pegar a refencia do objeto, sem o item colidir com o objeto(slot).

Entao, um exemplo de com vc faria o seu so usando o event Draw e ds_list e etc como vc falou, apenas para comparar se mais facil ou nao.

Obrigado.

Chuaschinai
Colaborador
Colaborador
Mensagens: 148

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por Chuaschinai » Sáb Out 10, 2020 11:51 am

Bom, fiz 2 exemplos bem simples, utilizando Objetos para o slot, e utilizando o Draw GUI para desenhar os slots na tela, dei um comentada no código qualquer coisa só perguntar.
Para colocar os itens nos Slots, basta arrastalos com o mouse.

Esse exemplo esta na versão 2.3 do GameMaker.
Exemplo Slot

Avatar do usuário
GhostPower
Membro
Membro
Mensagens: 92

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por GhostPower » Dom Out 11, 2020 7:23 pm

Boa noite grononmc,

Vlw cara, em questao de otimizaçao, voce saberia qual consome menos recurso do pc/android: ds_list, array, etc?

Muito obrigado.

Chuaschinai
Colaborador
Colaborador
Mensagens: 148

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por Chuaschinai » Dom Out 11, 2020 8:18 pm

Android não é minha área, porém depende muito da forma que você irá utilizar, creio que você nem notara a diferenças, pois normalmente não é necessário adicionar objetos a lista a todo momento, porque os problemas de performance acontece quando algo é usado por demasiado, como por exemplo adicionar milhares de dados em uma lista de uma só vez.
Arrays são sim mais rápidos não importa o sistema, a diferença entre eles e listas, é que listas são melhores manipuláveis dentro do código, e essa manipulação pode sim causar perda em performance.

Use array se preferir vai funcionar normalmente, as dicas que dou são para tomar cuidado em usar Accessors
Ex.: list[|0] = 0; é mais lento do que usar ds_list_add(list, 0)

No array tambem Ex.:
    array = [];
    array[@0] = 1;

é mais rápido fazer assim:
    array = array_create(10); Inicia um tamanho fixo
    array[@0] = 1;

É mais rápido pois você aloca o espaço na memória antes de adicionar valores ao array, em quanto opção mais lenta faz isso no momento que adiciona o valor.
No geral se precisa de performance user arrays.

Avatar do usuário
GhostPower
Membro
Membro
Mensagens: 92

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por GhostPower » Seg Out 12, 2020 11:36 am

Bom dia,

Vlw grononmc, Primeiro o @ e o ponteiro no game make? Este tamanho fixo esta ligado em um array com linhas e colunas? Posso acessa assim:

array = array_create(10);
array[@var] = 0;

e para coluna:

array[@linha,@coluna] = 0;

Muito obrigado.

Chuaschinai
Colaborador
Colaborador
Mensagens: 148

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por Chuaschinai » Seg Out 12, 2020 1:24 pm

GhostPower escreveu:Bom dia,

Vlw grononmc, Primeiro o @ e o ponteiro no game make? Este tamanho fixo esta ligado em um array com linhas e colunas? Posso acessa assim:

array = array_create(10);
array[@var] = 0;

e para coluna:

array[@linha,@coluna] = 0;

Muito obrigado.
No caso creio que funcione assim:
array[@line, coluna], mas pode também usar de outras formas sem o @.
Ex.:
   array[line, coluna]
   array[line][coluna] <- Funcional na nova versão 2.3 do GameMaker
   ou    
   array[@line][@coluna] <- Funcional na nova versão 2.3 do GameMaker

O Accessor @, é usado como referencia, quando precisa modificar sem armazenar em outra variável como em um script.

Avatar do usuário
GhostPower
Membro
Membro
Mensagens: 92

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por GhostPower » Ter Out 13, 2020 8:54 pm

Boa noite grononmc,

Vlw cara, estarei testando os exemplos.

Muito obrigado.

Avatar do usuário
GhostPower
Membro
Membro
Mensagens: 92

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Mensagem por GhostPower » Seg Nov 02, 2020 10:31 am

Bom dia,

Nao consigo acessar as variaveis dos objetos clones?

Codigo Create

Código: Selecionar todos

 slot = "Vazio"
Colidi com o item

Código: Selecionar todos

 slot = "Cheio"
Mas tenho varios objeto clones dele, como faço para acessa eles?

Queria um maneira de procurar todos os slots(objeto clone) que estajam "Vazio"?

Obrigado pela ajuda.

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante