Como Criar Objetos com GML?

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

Resolvido Como Criar Objetos com GML?

Mensagem por Allan Dennis em Seg 10 Maio 2010, 11:22

Oi pessoal!

Esse é meu primeiro post aqui. Gostaria de parabeniza-los pelo forum, muito legal.

Então...

Eu tô fazendo um mini aplicativo no GM8Pro, onde tenho que criar vários objetos semelhantes e tá complicado com Drag & Drop, pois fica uma tarefa muito repetitiva tanto ao criar como pra editar à medida que vou desenvolvendo o aplicativo.

A pergunta é: Tem como criar objetos, já com suas características inclusive Sprites, usando GML?

Agradecido desde já.

Editado por CyraxX: Topico resolvido.
Trancado.
Se o autor quiser reabrir o tópico envie MP para algum administrador ou moderador.

Allan Dennis

Número de Mensagens : 15
Idade : 43
Data de inscrição : 28/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Cainã em Seg 10 Maio 2010, 11:53

É bem simples, no exemplo abaixo ele adiciona um objeto com o dado nome e configura o Sprite e suas características:


{

nome_objeto = object_add(); //Cria o objeto

with (nome_objeto){

sprite_index = nome_sprite; //Sprite

solid = true; //Solidez

depth = -30 //Profundidade

persistent = false; //Persistente ou não

visible = true; //Visível ou não

}

}

Cainã

Número de Mensagens : 1335
Idade : 22
Data de inscrição : 07/03/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://cai.na.tl/

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Henrique_GJ em Seg 10 Maio 2010, 13:23

object_add()???? não seria instance_create(x,y,obj)?

Henrique_GJ

Número de Mensagens : 1344
Idade : 19
Data de inscrição : 30/12/2009
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://sitedosjogos.forumeiros.com

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Cainã em Seg 10 Maio 2010, 13:25

Henrique_GJ escreveu:object_add()???? não seria instance_create(x,y,obj)?

Depende, o object_add() adiciona um novo objeto ao jogo, o instance_create() apenas adiciona a Room um objeto já existente.

Cainã

Número de Mensagens : 1335
Idade : 22
Data de inscrição : 07/03/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://cai.na.tl/

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por shatterhand2 em Seg 10 Maio 2010, 13:35

O termo mais correto é adiciona uma nova INSTANCIA de um objeto a Room.

O Objeto não "existe" no programa rodando, ele é uma abstração. É uma definição de algo.

Ele só passa a existir durante a execução quando criamos uma ou mais INSTÂNCIAS dele.

É como o conceito da fábrica de torradeiras:

A Fábrica não é a torradeira, mas ela define como serão as torradeiras.

É como se a fábrica fosse o objeto, mas as torradeiras em si fossem as instâncias.

shatterhand2

Número de Mensagens : 645
Idade : 33
Data de inscrição : 21/10/2009
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://shatterhand.beatthegame.net

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Allan Dennis em Seg 10 Maio 2010, 13:41

Coloquei isso no script0:

{
ObjC3 = object_add(); //Cria o objeto
with (ObjC3){
sprite_index = SptTom; //Sprite
solid = true; //Solidez
depth = -30; //Profundidade
persistent = true; //Persistente ou não
visible = true; //Visível ou não
instance_create(10,10,ObjC3); //Adiciona à room
}
}

E isso no Creation Code da room0:

script0();

E não aparece nem menssagem de erro, apenas uma janela vasia.

Allan Dennis

Número de Mensagens : 15
Idade : 43
Data de inscrição : 28/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por dungeon333 em Seg 10 Maio 2010, 13:48

Código:

nome_objeto = object_add()
object_set_depth(nome_objeto, 100) // depth
object_set_mask(nome_objeto,mask0) // mask
object_set_sprite(nome_object,sprite0) // sprite
...

dungeon333

Número de Mensagens : 351
Data de inscrição : 29/05/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Cainã em Seg 10 Maio 2010, 14:02

Allan Dennis escreveu:Coloquei isso no script0:

{
ObjC3 = object_add(); //Cria o objeto
with (ObjC3){
sprite_index = SptTom; //Sprite
solid = true; //Solidez
depth = -30; //Profundidade
persistent = true; //Persistente ou não
visible = true; //Visível ou não
instance_create(10,10,ObjC3); //Adiciona à room
}
}

E isso no Creation Code da room0:

script0();

E não aparece nem menssagem de erro, apenas uma janela vasia.

Faça como o dungeon333 disse, talvez eu tenha errado na hora de definir as configurações.

Cainã

Número de Mensagens : 1335
Idade : 22
Data de inscrição : 07/03/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://cai.na.tl/

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Denis Lemos em Seg 10 Maio 2010, 15:26

Não testei, mas acho que o geito do "Cainã" funciona também, mas tem uma coisa que eu não tenho certeza se é verdade, mas eu nunca consegui criar um objeto ou uma instancia pelo "create_code" da room, nunca funcionou comigo, por isso eu acho que não dá para adicionar instancias pelo code da room, mas não tenho certeza !

Vou fazer uns testes, e dou um edit depois para dizer se, dá ou não dá !

[EDITTADO]

Retiro o que eu disse, dá para criar instancias pelo crete code da room sim, mas não entendo como que no meu jogo que estou fazendo, eu precisava muito disso e não funcionou de geito nenhum, por isso pensei que não dava, mas agora vi que é possivel !

Há o geito do "Cainã" realmente não funcionou, mas seria o geito que tentaria fazer so que sem resultado também, o modo do "Dungeon" funcionou legal, veja o código que coloquei no create code da room:
Código:

obj_1=object_add()

object_set_sprite(obj_1,sprite0)

instance_create(200,200,obj_1)
Assim funcionou beleza !!!

EDITADO[2ª vez]

Bom o geito do "Cainã", que seria como eu faria, funciona também !
Só que primeiro tem que adicionar a instancia do novo objeto na room, e depois usar o with, por que o with só vai funcionar se o objeto já estiver na room, como foi usado o with antes da ter sido criado a instância do novo objeto, ficaria difícil de funcionar mesmo !

Então aqui está o geito que testei e funcionou perfeitamente:
Código:
obj_1=object_add()
instance_create(200,200,obj_1)

with(obj_1)
{
 sprite_index=sprite0
 solid=true
 depth=-100
}
Coloque nessa ordem no seu script !

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Allan Dennis em Ter 11 Maio 2010, 01:33

Agrdeço a todos que contribuíram, principalmente ao Denis Lemos, que resolveu meu problema, pois o jeito dele foi o único que funcionou:

obj_1=object_add()
instance_create(200,200,obj_1)

with(obj_1)
{
sprite_index=sprite0
solid=true
depth=-100
}

Obrigado Denis, mas só pra finalizar, poderia explicar porquê só funcionou desse jeito e não dos outros. Afinal não adianta resolver um problema isolado de um, sem explicar para que outros utilizem em seus próprios casos. E também pra fixar melhor.

Allan Dennis

Número de Mensagens : 15
Idade : 43
Data de inscrição : 28/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por RodrigoM. em Ter 11 Maio 2010, 06:25

Allan Dennis escreveu:
Agrdeço a todos que contribuíram, principalmente ao Denis Lemos, que resolveu meu problema, pois o jeito dele foi o único que funcionou:

obj_1=object_add()
instance_create(200,200,obj_1)

with(obj_1)
{
sprite_index=sprite0
solid=true
depth=-100
}

Obrigado Denis, mas só pra finalizar, poderia explicar porquê só funcionou desse jeito e não dos outros. Afinal não adianta resolver um problema isolado de um, sem explicar para que outros utilizem em seus próprios casos. E também pra fixar melhor.

Se me permite eu posso tentar explicar! =D

Bem primeiramente, o Denis complementou os codigos dos outros amigos, e depois o codigo do cainã estava correto, ele apenas esqueceu de criar o objeto sendo assim, não tem como definir nada!

Veja bem:

Quando ele criou o objeto pelo object_add(), ele apenas, criou o objeto no GM,e não na room, sendo assim por mais que ele tenha configurado o objeto, Solid,Deph, ele não desenhou o objeto na Tela, então não adiantou nada, só que o denis desenhou na tela o objeto pelo instance_create, sendo assim o codigo pode fluir como deveria!

Espero que tenha entendido! [:¬D]


Fallow

CyraxX.

RodrigoM.

Número de Mensagens : 569
Idade : 21
Data de inscrição : 06/08/2009
Reputação : 5
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Allan Dennis em Ter 11 Maio 2010, 14:37

Entendí, mas há outra pergunta esêncial para complementar esse topico:

Como interagir com um objeto criado desta forma?

Ex.: Ao clicar com o esquerdo do mouse nesse objeto muda o sprite, e ao soltar ou saír de cima (leave), volta o sprite original.


Última edição por Allan Dennis em Ter 11 Maio 2010, 14:39, editado 1 vez(es)

Allan Dennis

Número de Mensagens : 15
Idade : 43
Data de inscrição : 28/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Denis Lemos em Ter 11 Maio 2010, 14:38

Cirax, não é apenas isso, mas sim eu só mostrei como o código do dungeon se escrevia como o nosso amigo queria, e eu nem sabia que tinha essa espécie de códigos "obj_set_sprite()" e tal , por isso eu disse que a minha lógica seria do modo que o "Cainã" fez !

Mas complementando, não é apenas criar o objeto com "object_add" e depois coloca-lo na room com "instance_create", pois como expliquei no primeiro post, tem que se tomar o cuidado de colocar na ordem certa !
Que seria:

1º: Criar o objeto no GM obj_1=object_add()

2º: Criar o objeto na room instance_crete(200,200,obj_1)

3º: Modificar suas propriedades com with(obj_1)

Pois o modo que estava dando erro, era porque primeiro foi criado o objeto no GM, que é correto, mas depois estava invertido, em segundo se alterava as propriedades do objeto com with e só depois se criava ele na room !

Mas o quê então acontecia, a função with, só altera as propriedades dos objetos instancionados na room, e como foi usado o with antes de ser criado a instância do objeto na room, não alterou nada, e por último foi criada a instância do objeto, que vem sem nenhuma propriedade !

Taduzindo, para usar o with, primeiro tem que existir o objeto na room, pois ele altera somente as propriedades das instâncis do mesmo objeto que existem na nossa room !

Agora o modo do "dungeon" usando as funções, "object_set_sprite", "object_set_alpha", etc...
Esse modo sim altera as propriedades do objeto propriamente dito de forma global, não somente os que só existem na room, e sim, os já existiam e os que vão ser criados depois, vão vir com que for indicado por essas funções !

Espero que tenha entendido "Alan Dennis", mas eu não sou muito bom em explicações !

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Cainã em Ter 11 Maio 2010, 15:01

Allan Dennis escreveu:
Entendí, mas há outra pergunta esêncial para complementar esse topico:

Como interagir com um objeto criado desta forma?

Ex.: Ao clicar com o esquerdo do mouse nesse objeto muda o sprite, e ao soltar ou saír de cima (leave), volta o sprite original.

Para isso você precisa criar eventos no objeto, faça assim, depois de object_add() adicione as seguintes linhas:

Código:
{

nome_objeto = object_add()

object_event_add(nome_objeto,ev_mouse,ev_left_press,"sprite_index = nome_imagem_pressionado");

object_event_add(nome_objeto,ev_mouse,ev_left_release,"sprite_index = nome_imagem_solto");

}

Cainã

Número de Mensagens : 1335
Idade : 22
Data de inscrição : 07/03/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://cai.na.tl/

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Allan Dennis em Ter 11 Maio 2010, 17:14

Valeu, mas ainda tem um problema: Quando clico em um objeto que está sobre o outro, aciona os dois (o de cima com depth=0 e o outro =1).

Allan Dennis

Número de Mensagens : 15
Idade : 43
Data de inscrição : 28/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Cainã em Ter 11 Maio 2010, 17:17

Isso não tem como resolver, só usando variáveis o que é mais complexo.

Cainã

Número de Mensagens : 1335
Idade : 22
Data de inscrição : 07/03/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://cai.na.tl/

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Allan Dennis em Ter 11 Maio 2010, 18:11

Cainã escreveu:Isso não tem como resolver, só usando variáveis o que é mais complexo.

Desculpa eu discordar, mas eu tava com esse mesmo problema quando tava fazendo com drag&drop. Depois de muito tentar, não sei como, conseguí fazer funcionar legal.

Allan Dennis

Número de Mensagens : 15
Idade : 43
Data de inscrição : 28/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Cainã em Ter 11 Maio 2010, 18:18

Allan Dennis escreveu:
Cainã escreveu:Isso não tem como resolver, só usando variáveis o que é mais complexo.

Desculpa eu discordar, mas eu tava com esse mesmo problema quando tava fazendo com drag&drop. Depois de muito tentar, não sei como, conseguí fazer funcionar legal.

Bom, eu pelo menos nunca consegui. O meu método seria fazer por variáveis, apesar de não ser um método tão preciso.

Cainã

Número de Mensagens : 1335
Idade : 22
Data de inscrição : 07/03/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://cai.na.tl/

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Allan Dennis em Sex 14 Maio 2010, 21:47

Resolví cortando a parte do sprite que ficava encoberta pelo outro e dando um crop.

Allan Dennis

Número de Mensagens : 15
Idade : 43
Data de inscrição : 28/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como Criar Objetos com GML?

Mensagem por Conteúdo patrocinado Hoje à(s) 08:17


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