Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
Como Criar Objetos com GML?
+3
Henrique_GJ
Cainã
Allan Dennis
7 participantes
Página 1 de 1
Como Criar Objetos com GML?
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.
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- Data de inscrição : 28/04/2010
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como Criar Objetos com GML?
É 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
}
}
{
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
}
}
Re: Como Criar Objetos com GML?
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.
Re: Como Criar Objetos com GML?
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.
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.
Re: Como Criar Objetos com GML?
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.
{
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- Data de inscrição : 28/04/2010
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como Criar Objetos com GML?
- 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- Data de inscrição : 29/05/2009
Reputação : 0
Número de Mensagens : 351
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como Criar Objetos com GML?
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.
Re: Como Criar Objetos com GML?
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:
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:
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)
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
}
Denis Lemos- Data de inscrição : 17/05/2009
Reputação : 1
Número de Mensagens : 938
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Unity
- C#
- Godot
- C ou C++
Re: Como Criar Objetos com GML?
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.
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- Data de inscrição : 28/04/2010
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como Criar Objetos com GML?
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.- Data de inscrição : 06/08/2009
Reputação : 5
Número de Mensagens : 569
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como Criar Objetos com GML?
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.
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- Data de inscrição : 28/04/2010
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como Criar Objetos com GML?
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 !
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- Data de inscrição : 17/05/2009
Reputação : 1
Número de Mensagens : 938
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Unity
- C#
- Godot
- C ou C++
Re: Como Criar Objetos com GML?
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");
}
Re: Como Criar Objetos com GML?
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- Data de inscrição : 28/04/2010
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como Criar Objetos com GML?
Isso não tem como resolver, só usando variáveis o que é mais complexo.
Re: Como Criar Objetos com GML?
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- Data de inscrição : 28/04/2010
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como Criar Objetos com GML?
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.
Re: Como Criar Objetos com GML?
Resolví cortando a parte do sprite que ficava encoberta pelo outro e dando um crop.
Allan Dennis- Data de inscrição : 28/04/2010
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» Como criar um vetor de objetos?
» Como criar vários objetos(instances) de uma só vez??
» [Dúvida]como criar vários objetos um após o outro?[RESOLVIDO]
» não criar objetos sobre objetos sólidos
» Criar Objetos
» Como criar vários objetos(instances) de uma só vez??
» [Dúvida]como criar vários objetos um após o outro?[RESOLVIDO]
» não criar objetos sobre objetos sólidos
» Criar Objetos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos