Conectar-se
Quem está conectado
32 usuários online :: 3 usuários cadastrados, Nenhum Invisível e 29 Visitantes

CRP-Max, Fuzenrad, Willy

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 08/05/2008
Número de Mensagens : 36
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.deploy.net.br

GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Sab 14 Fev 2009, 10:17
Reputação da mensagem: 100% (1 votos)
Na 1º lição de GM RPG aprendemos a criar um movimento com Clique de mouse, no estilo dos jogos atuais, porém usando um char Isométrico.
Muitas pessoas não tem muita noção e acham que um jogo Isométrico é um jogo na diagonal.
Isto é verdade em relação aos gráficos, mas o que realmente muda é a proporção do movimento.
Num jogo isométrico, o movimento na horizontal é sempre 2 vezes proporcional ao movimento na vertical, formando assim a idéia de um losango.
Todo e qualquer movimento ou cenário nesse tipo de jogo deve seguir este padrão.
Na aula passada eu disse que aprenderíamos sobre movimento de Mobs(Inimigos). A sigla Mob é muito usada hoje nos jogos Online, talvez pelo tamanho da palavra.

Você já usou Paths no GM? se não, hoje será uma boa chance de ver como funciona e como criar e modificar paths usando GML.

O que faremos será criar um Path, com GML, e fazer nosso Mob seguir o mesmo.
Pra quem já fez jogos em RPGMaker sabe que rafemos o mesmo tipo de movimento quando se cria um evento e coloca-se nele uma rota-pré-definida.

O uso de Paths nesse caso não precisa se limitar aos Mobs, ele pode ser usado para NPCs e objetos de cenário.
Vamos começar.
Antes de mais nada um detalhe: estaremos usando a mesma idéia de Sprites da aula passada. Eu ainda estou desenvolvendo a ferramenta de criação, assim que ela estiver pronta eu disponibilizarei.
Enquanto isso, use a imagem abaixo para nosso exemplo de Mob:

Crie um sprite, chame-o de Zumbi. Repita os passos de criação do Strip, como na aula passada, lembrando de deixar o ultimo quadro branco.

Vamos exercitar a criação de um Path? Crie um novo Path na pasta, e vá clicando na tela e movendo os pontos até ficarem assim:

Observe que fizemos uma elípse. na verdade esse exercício de Paths é apenas para que você saiba depois criar seus próprios paths.
Não iremos usar este que criamos. Porque? Simples: O Path funciona na tela exatamente aonde você o criou. Se tentarmos mudar as coordenadas dele em tempo de execução, TODOS os objetos que compartilharem o path irão para aquela posição.
Crie um script, chame-o de elipse_path, e adione nele o seguinte código:
Código:
X = argument0;
Y = argument1;
ind = path_add();
path_set_kind(ind,argument2) //0 - Reta, 1 = Curva
path_add_point(ind,X,Y, 32,100);
path_add_point(ind,X,Y, 96,100);
path_add_point(ind,X 80,Y, 128,100);
path_add_point(ind,X 144,Y, 128,100);
path_add_point(ind,X 224,Y, 96,100);
path_add_point(ind,X 224,Y, 32,100);
path_add_point(ind,X 144,Y,100);
path_add_point(ind,X 80,Y,100);
return ind;
Observe que nos comandos path_add_point estamos colocando as posições X e Y passadas como parãmetro mais o posicionamento baseado naquele path oval que desenhamos.
A idéia é que, para cada Tipo de Path que você crie, haja um script de criação para o mesmo, de forma que vários objetos poderão compartinhar do tipo de movimento, sem compartilhar o mesmo Path e consequentemente havendo falhas no seu jogo.
Para já vermos a bagaça funcionando de várias formas, crie outro script, nomeie-o de circulo_path e adicione o seguinte código:
Código:
X = argument0;
Y = argument1;
ind = path_add();
path_set_kind(ind,argument2)//0 - Reta, 1 = Curva
path_add_point(ind,X,Y, 64,100);
path_add_point(ind,X,Y, 128,100);
path_add_point(ind,X 64,Y, 192,100);
path_add_point(ind,X 128,Y, 192,100);
path_add_point(ind,X 192,Y, 128,100);
path_add_point(ind,X 192,Y, 64,100);
path_add_point(ind,X 128,Y,100);
path_add_point(ind,X 64,Y,100);
return ind;
Agora temos dois tipos de movimento para testar.
Crie um objeto, chame-o de MOB, coloque o Sprite do Zumbi. Adicione os Eventos Create e Draw. Agora em cada um coloque assim:
Evento Create:
Código:
ind = circulo_path(x,y,1);
path_start(ind,2,1,true);
speed = 1.0;
image_speed=0.3;
image_index=6;
old_dir = 1;
Evento Draw:
Código:
facing = round(direction / 45);
if facing == 8 then facing = 0;
direcao = (facing * 4);
if old_dir == 1 {
    old_dir = direcao;
    image_index = direcao;
}
if (old_dir != direcao){
    old_dir = direcao;
    image_index = direcao;
}
if (round(image_index) >= direcao  4) {image_index = direcao;}
draw_sprite(sprite_index,image_index,x,y);
Mas o que foi feito aqui??
Bem, vou explicar:
No evento Create, declaramos uma variável ind, que recebe o path criado pelo script circulo_path. Setamosas variáveis de movimento e de imagem, e criamos uma old_dir. Esta variável nos ajudará a saber se o mob mudou de direção, para podermos mudar também o seu sprite.
No evento Draw, encontramos a direção do objeto e usamos uma divisão por 45 para obtermos 8 direções. Fazemos uma correção nos cálculos, pois precisamos do valor entre 1 e 7, Setamos a direção. Validamos se a direção mudou e se sim, mudamos novamente o seu valor, e no final fazemos a mesma jogada que foi feita com o personagem na aula passada.
Por fim desenhamos o Sprite.
Para testar, crie uma Room, adicione vários Zumbis em lugares diferentes e rode.
Se todos os passos foram seguidos, seu mob vai andar lindo num movimento circular excelente. Para mudar o movimento, teste o script elipse_path no lugar do circulo.
Agora como execício, crie seus próprios Paths. Para ter certeza do desenho que eles descreverão, crie primeiro um path atoa e desenhe nele. Anote os valores dos pontos e use-os como nos scripts que criamos.

Algumas pessoas sempre põem dificuldade em criar, por ser mais fácil pegar pronto na Net. Eu discordo, e provo que com o Game Maker é possível fazer qualquer tipo de jogo, basta que você seja criativo e esforçado. Ninguém precisa saber tudo, até eu mesmo pesquiso as vezes para encontrar modelos de engines e adaptá-los à minha necessidade.

Na Próxima lição: Menus Flutuantes estilo Ragnarok. Até lá.


Última edição por joaoneto em Seg 16 Fev 2009, 00:19, editado 1 vez(es)
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

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

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Sab 14 Fev 2009, 15:41
Oi amigo, seu tutorial está ótimo, como sempre. Gostaria apenas de dizer o seguinte:
Na verdade não precisa do script para as path veja o comando:
path_start(path,speed,endaction,absolute) Inicia uma path para instância atual.
Descrição dos parâmetros:

path- a path que vc definiu na interface
speed-velocidade da path
endaction- ação a ser executada no final da path
  • 0-finaliza a path
  • 1-continua do começo
  • 2-continua da ultima posicao
  • 3-inverte a path

absolute-se true fica como vc disse mais se for false ele fica RELATIVO. Então ele pega a posição atual da instancia na qual se está atribuindo a path.

Isso foi só pra exclarecer, pois seu tambem método funciona.
avatar
Data de inscrição : 08/05/2008
Número de Mensagens : 36
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.deploy.net.br

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Sab 14 Fev 2009, 18:27
@vinians escreveu:Oi amigo, seu tutorial está ótimo, como sempre. Gostaria apenas de dizer o seguinte:
Na verdade não precisa do script para as path veja o comando:
path_start(path,speed,endaction,absolute) Inicia uma path para instância atual.
Descrição dos parâmetros:

path- a path que vc definiu na interface
speed-velocidade da path
endaction- ação a ser executada no final da path
  • 0-finaliza a path
  • 1-continua do começo
  • 2-continua da ultima posicao
  • 3-inverte a path

absolute-se true fica como vc disse mais se for false ele fica RELATIVO. Então ele pega a posição atual da instancia na qual se está atribuindo a path.

Isso foi só pra exclarecer, pois seu tambem método funciona.
Obrigado pela observação grande amigo. Isso mostra que pode-se então criar os Paths e usá-los sem a necessidade de se usar os scripts,
mais uma opção para aqueles que são pouco familiarizados com os mesmos, como eu Happy.
avatar
Data de inscrição : 04/02/2009
Número de Mensagens : 108
Insígnias de JAM :

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

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

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Dom 15 Fev 2009, 23:37
o meu deu erro.><


espero q me ajudem.

wow menu de ragnarok essa nun posso perder.
vlw.
avatar
Data de inscrição : 08/05/2008
Número de Mensagens : 36
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.deploy.net.br

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Seg 16 Fev 2009, 00:18
cara, olha na sua sintaxe que ficou faltando uma virgula entre o Y e o 32.
Vou ter que começar a postar código fonte junto, toda vez que eu vou postar Code ele come algum pedaço e fica dando esses erros.
avatar
Data de inscrição : 04/02/2009
Número de Mensagens : 108
Insígnias de JAM :

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

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

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Ter 17 Fev 2009, 16:42
valew cara.
avatar
Data de inscrição : 14/11/2009
Número de Mensagens : 6
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Dom 15 Nov 2009, 18:31
o meu deu erro

esse erro aki:

___________________________________________
COMPILATION ERROR in Script: elipse_path
Error in code at line 5:
path_add_point(ind,X,Y, 32,100);

at position 32: Wrong number of arguments to function or script.
avatar
Data de inscrição : 14/11/2009
Número de Mensagens : 6
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Dom 15 Nov 2009, 18:36
tem como alguem me ajudar?

Editado por CPinheiro: double posts são proibídos.
Avisado.
avatar
Ranking : Sem avaliações
Data de inscrição : 26/08/2009
Número de Mensagens : 969
Insígnias de JAM :

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

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

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Seg 16 Nov 2009, 11:16
path_add_point(ind,X,Y, 32,100);
veja tem um espaço entre a virgula e o 32

troca por isso: path_add_point(ind,X,Y,32,100);
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: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Seg 16 Nov 2009, 15:01
Mas é lógico que isso não vai funcionar... Está cheio de erros !

Por exemplo:path_add_point(ind,x,y,speed) vejam bem; essa função tem apenas "4 argumentos" !
Agora olhe quantos ele colocou no script dele :path_add_point(ind,X,Y, 32,100) Ali tem cinco argumentos, já vai dar um erro de cara !

Eu corrigi eu vou colocar aqui do jeito que não deu erro, pelomenos aqui para mim:
Aqui é os códigos do script '' elipse_path " corrigido:
Código:
X = argument0;
Y = argument1;
ind = path_add();
path_set_kind(ind,argument2) //0 - Reta, 1 = Curva
path_add_point(ind,X,Y+32,100);
path_add_point(ind,X,Y+96,100);
path_add_point(ind,X+80,Y+128,100);
path_add_point(ind,X+144,Y+128,100);
path_add_point(ind,X+224,Y+96,100);
path_add_point(ind,X+224,Y+32,100);
path_add_point(ind,X+144,Y,100);
path_add_point(ind,X+80,Y,100);
return ind;
E aqui do " circulo_path " :
Código:
X = argument0;
Y = argument1;
ind = path_add();
path_set_kind(ind,argument2)//0 - Reta, 1 = Curva
path_add_point(ind,X,Y+64,100);
path_add_point(ind,X,Y+128,100);
path_add_point(ind,X+64,Y+192,100);
path_add_point(ind,X+128,Y+192,100);
path_add_point(ind,X+192,Y+128,100);
path_add_point(ind,X+192,Y+64,100);
path_add_point(ind,X+128,Y,100);
path_add_point(ind,X+64,Y,100);
return ind;
Esse é do " Evento Create " objeto, esse está correto e não muda nada :
Código:
ind = circulo_path(x,y,1);
path_start(ind,2,1,true);
speed = 1.0;
image_speed=0.3;
image_index=6;
old_dir = 1;
E esse é do " Evento Draw " do objeto :
Código:
facing = round(direction / 45);
if facing == 8 then facing = 0;
direcao = (facing * 4);
if old_dir == 1 {
    old_dir = direcao;
    image_index = direcao;
}
if (old_dir != direcao){
    old_dir = direcao;
    image_index = direcao;
}
if (round(image_index) >= direcao + 4) {image_index = direcao;}
draw_sprite(sprite_index,image_index,x,y);

Nesse último, só faltou colocar ali no código bem em baixo, entre " direcao 4 " faltou um sinal, não sei qual era o sinal original dele , eu coloquei o de adição = "+", e funcionou direitinho !

Bom teste agora e diga se deu certo !

Hà... Tirando esses errinhos, que concerteza foi na digitação e não por ele não saber, que fique bem claro isso;
O tutorial está muito bom ! Parabéns !!!

Obs : Eu testei isso com uma única sprite com somente uma sub-imagem !
avatar
Data de inscrição : 14/11/2009
Número de Mensagens : 6
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Qui 19 Nov 2009, 18:11
Denis, cara valeu, isso me salvou. vc me ajdo muito cara, VLW mesmo, te adoro
avatar
Data de inscrição : 02/09/2010
Número de Mensagens : 45
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áriohttp://www.zoomdicas.blogspot.com

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Dom 31 Out 2010, 21:14
Denis, valeu meu!
Tutorial muito bom!


OBS PARA O DENIS: Eu também moro aqui no RS!
avatar
Data de inscrição : 15/10/2010
Número de Mensagens : 273
Insígnias de JAM :

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

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

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Dom 14 Nov 2010, 12:13
Não sei se estou revivendo mas a regra diz que se tiver dúvidas em tutos pode Happy

O meu da esse erro akie:


Código:
___________________________________________
ERROR in
action number 1
of Create Event
for object Mob:

In script circulo_path:
Error in code at line 3:
  ind = path_add();
        ^
at position 8: This function is only available in the Pro Edition.

Ou seja, essa função só é possível no Pro, tem como alguém mudar o code pro Lite pf!?
avatar
Ranking : Nota A
Notas recebidas : A-A-A-A-B
Data de inscrição : 04/07/2010
Número de Mensagens : 1028
Insígnias de JAM :

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

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

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Dom 14 Nov 2010, 12:50
Ou seja, essa função só é possível no Pro, tem como alguém mudar o code pro Lite pf!?
Creio que não seja possível modificar o código _path, a solução seria você registrar o programa.

Obs: O tópico da sua dúvida foi removido.
avatar
Data de inscrição : 24/01/2013
Número de Mensagens : 7
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Sab 26 Jan 2013, 05:27
Como faço para deixar algo com movimentos aleatorios?
avatar
Ranking : Nota D
Notas recebidas : D+E+C
Data de inscrição : 23/01/2012
Número de Mensagens : 100
Insígnias de JAM :

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

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

Re: GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

em Sex 01 Mar 2013, 23:52
cara me passa a parte 1 deste tutorial por favor?
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