Avatar do usuário
GhostPower
Membro
Membro
Autor
Mensagens: 38
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 61

Re: [Game Maker] Como acessar uma variável pelo outro objeto?

Sex Out 05, 2018 11:36 am

Bom dia,
None

Cara então e isso mesmo que quero fazer, mas ele esta pegando o objeto(slot).

No Collision do objeto slot estou fazendo isso:


instanciaItem = other;

global.saveObjeto = object_get_name(instanciaItem.objetoTiro);




Depois dentro do objeto item estou declarando a variável assim:

....

objetoTiro = asset_get_index("obj_tiro");

....


O que esta errado?

Obrigado pela ajuda de todos.
1

Tags:
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 168
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 351

Re: [Game Maker] Como acessar uma variável pelo outro objeto?  Tópico resolvido

Sex Out 05, 2018 2:51 pm

Acabei de fazer um modelo.

No meu modelo eu tenho 3 objetos.
Bala
Slot
Arma

Eu preciso colocar a bala no slot, se o slot tiver uma bala ele pode ser movido, quando ele colidir com a arma ele volta à posição inicial e apaga a bala que está nele (passando ela para a arma) e deixando a arma carregada.

A arma só pode atirar se estiver
carregada e vai atirar um tipo de bala específico (a bala possui 2 filhos com cores e velocidades diferentemente).

Eu fiz o teste, consegui passar a bala para o slot, e consegui passar a bala do slot para a arma, mas na hora de atirar não funcionava, descobri o motivo e vou tentar explicar tudo aqui.


No meu código eu fiz o seguinte.
O slot possui uma variável para o tipo de bala, quando a bala colide com o slot ele altera algumas informações, a mais importante (neste caso) é o tipo.
Eu primeiro coloquei other.tipo = self
Isto está ok, mas para facilitar a leitura do código eu coloquei
Other.tipo = self.object_index
Porque eu vou precisar o objectivo Index no get name, então achei melhor usar aqui do que usar o .object_index dentro do get name.

Depois fiz na colisão entre o slot e a arma o mesmo processo, a arma possui uma variável chamada tipo.
No evento (você pode usar o instance place) de colisão do objeto slot com o objeto arma eu fiz o seguinte (de novo, só a parte mais importante)
Other.tipo = object_get_name(tipo);
Também deixei a arma carregada e dei uma carga para ela, mas aqui não tem segredo.

Aí na hora de atirar eu fiz o código de instanciar normalmente na arma
Var bala = instance_create_layer(x, y, layer, tipo) e não dava certo, o motivo: o retorno do get name é string! E a gente precisa de um comando! Entao antes de atirar eu criei outra variável e meu código ficou mais ou menos assim.

Var agora = asset_get_index(tipo);
Var bala = instance_create_layer(x, y, layer, agora)

E pronto, ele criou a bala que eu queria, cada uma com suas próprias características bonitinho.
O único problema que deu é que ao criar o tiro no slot usando o self.object_index eu permiti que ao destruir ele eu também ariscaria a deletar alguma outra bala, então é melhor colocar o object_index dentro do get name para evitar este problema.

Espero que tenha dado para entender.
Qualquer coisa é só falar que eu envio o projeto para você dar uma olhada.
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Avatar do usuário
GhostPower
Membro
Membro
Autor
Mensagens: 38
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 61

Re: [Game Maker] Como acessar uma variável pelo outro objeto?

Sex Out 05, 2018 3:48 pm

Boa tarde
None,

Cara pode passa o projeto, não estou entendendo como pego esta variável do tipo.

No meu projeto só a uma colisão que e entre arma e o slot, pq bala? a bala não esta armazenada em uma variável na arma?

Obrigado pela ajuda.
1
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 168
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 351

Re: [Game Maker] Como acessar uma variável pelo outro objeto?

Sex Out 05, 2018 5:24 pm

Então, eu fiz isso porque se eu usar apenas obj_tiro, na hora de destruir eu iria destruir o objeto e não a instância, destruindo assim todos os tiros existentes.

Eu fiz com dois modelos, um em que o obj_tiro já está no slot e você não precisa arrastar o tiro, teste este modelo e você vai ver que na hora que ele destrói o tiro ele destrói todos.
No outro modelo você arrasta a bala até o slot e então você arrasta o slot para a arma, neste caso você escolhe qual tiro você quer atirar e a arma vai atirar o tiro escolhido.

Os dois modelos são o mesmo projeto e não tem qualquer diferença no código, basta testar arrastando a bala e sem arrastar ela, para remover o risco de apagar todas as balas basta alterar o create do slot (noone ou 0 ou -1 ao invés de obj_tiro).

Link do modelo.

https://drive.google.com/file/d/1Gkdy426ydctscKParTmjF_xtXYmQGQaX/view?usp=drivesdk

Espero que ajude.
1
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Avatar do usuário
GhostPower
Membro
Membro
Autor
Mensagens: 38
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 61

Re: [Game Maker] Como acessar uma variável pelo outro objeto?

Sex Out 05, 2018 6:02 pm

Boa noite
None,

Cara o meu gm e a versão 1.4, e não consigo abrir ele.

obrigado pela ajuda.
1
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 168
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 351

Re: [Game Maker] Como acessar uma variável pelo outro objeto?

Sex Out 05, 2018 6:26 pm

Você pode abrir a pasta dele e só pegar os códigos.
Basta abrir a pasta objects que lá vai ter todos os objetos e seus códigos.

Os tiro01 e tiro021 são filho do tiro.
A única diferença nos códigos é o instance create que no GMS2 ele usar instance create layer, de resto fica na mesma.
1
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 168
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 351

Re: [Game Maker] Como acessar uma variável pelo outro objeto?

Sex Out 05, 2018 6:27 pm

Ah, não esquece de escolher abrir com bloco de notas.
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Avatar do usuário
GhostPower
Membro
Membro
Autor
Mensagens: 38
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 61

Re: [Game Maker] Como acessar uma variável pelo outro objeto?

Sáb Out 06, 2018 9:20 am

Bom dia
None,

Valeu cara consegui, como seu exemplo fico fácil para entender.

Obrigado pela ajuda de todos.
1

Quem está online

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