Conectar-se
Quem está conectado
22 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 22 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
Data de inscrição : 28/04/2010
Número de Mensagens : 15
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Como Criar Objetos com GML?

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.
avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 1335
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://cai.na.tl/

Re: Como Criar Objetos com GML?

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

}

}
avatar
Data de inscrição : 30/12/2009
Número de Mensagens : 1344
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 4

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://sitedosjogos.forumeiros.com

Re: Como Criar Objetos com GML?

em Seg 10 Maio 2010, 13:23
object_add()???? não seria instance_create(x,y,obj)?
avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 1335
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://cai.na.tl/

Re: Como Criar Objetos com GML?

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.
avatar
Data de inscrição : 21/10/2009
Número de Mensagens : 645
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 11

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuáriohttp://shatterhand.beatthegame.net

Re: Como Criar Objetos com GML?

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.
Data de inscrição : 28/04/2010
Número de Mensagens : 15
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Como Criar Objetos com GML?

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.
Data de inscrição : 29/05/2009
Número de Mensagens : 351
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Como Criar Objetos com GML?

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
...
avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 1335
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://cai.na.tl/

Re: Como Criar Objetos com GML?

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.
avatar
Data de inscrição : 17/05/2009
Número de Mensagens : 938
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Como Criar Objetos com GML?

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 !
Data de inscrição : 28/04/2010
Número de Mensagens : 15
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Como Criar Objetos com GML?

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.
Data de inscrição : 06/08/2009
Número de Mensagens : 569
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 5

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Como Criar Objetos com GML?

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.
Data de inscrição : 28/04/2010
Número de Mensagens : 15
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Como Criar Objetos com GML?

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)
avatar
Data de inscrição : 17/05/2009
Número de Mensagens : 938
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Como Criar Objetos com GML?

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 !
avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 1335
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://cai.na.tl/

Re: Como Criar Objetos com GML?

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");

}
Data de inscrição : 28/04/2010
Número de Mensagens : 15
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Como Criar Objetos com GML?

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).
avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 1335
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://cai.na.tl/

Re: Como Criar Objetos com GML?

em Ter 11 Maio 2010, 17:17
Isso não tem como resolver, só usando variáveis o que é mais complexo.
Data de inscrição : 28/04/2010
Número de Mensagens : 15
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Como Criar Objetos com GML?

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.
avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 1335
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://cai.na.tl/

Re: Como Criar Objetos com GML?

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.
Data de inscrição : 28/04/2010
Número de Mensagens : 15
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Como Criar Objetos com GML?

em Sex 14 Maio 2010, 21:47
Resolví cortando a parte do sprite que ficava encoberta pelo outro e dando um crop.
Conteúdo patrocinado

Re: Como Criar Objetos com GML?

Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum