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
[Isométrico] Parte 3 - Movimentação de NPCs
+2
Biemorth
JV Justino
6 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
[Isométrico] Parte 3 - Movimentação de NPCs
Nome: [Isométrico] Parte 3 - Movimentação de NPCs
Descrição: Como fazer NPCs terem inteligência artificial
Nível: Intermediário
Requerimentos: :gm8:Lite/Pro
Olá!
Aqui estamos na terceira parte dos tutoriais sobre jogos Isométricos. Nesse tutorial serão ensinados movimentos de NPCs.
Vamos Começar!
Se ainda não viu os outros tutoriais, seguem os links:
Parte 1 - Movimentação Básica
Parte 2 - Blocos Flutuantes e Plataformas Móveis
Primeiramente, vamos fazer o NPC se mover para as diagonais, em direções randômicas.
Crie um sprite e chame-a de spr_npc. Carregue esta imagem:
Crie mais uma sprite e chame-a de mask_npc. Carregue esta imagem:
Crie um objeto chamado obj_npc. Coloque nele a sprite spr_npc e a mask mask_npc.
No evento Create coloque:
z=0;
Define a altura do NPC. Pode ser alterada para fazer NPCs de diferentes alturas.
hspeed=choose(2,-2);
vspeed=choose(1,-1);
Define as velocidades horizontal e vertical, usando valores aleatórios, alterando a direção dos do NPC.
No evento Step coloque:
if(place_snapped(32,16) && z=zland)
{
hspeed=choose(hspeed,hspeed,2,-2);
vspeed=choose(vspeed,vspeed,1,-1);
}
Se estiver alinhado a grade (32x16) e estiver no chão, ele poderá escolher outra direção, ou continuar na mesma. Repare que as variáveis hspeed e vspeed aparecem duas vezes nos respectivos códigos. Isso faz com que o objeto não mude de direção a toda hora, continuando no trajeto em que está.
depth=-y-z;
Define a profundidade do objeto, relacionando a posição y e sua altura.
Adicione um evento de colisão com o obj_player e coloque:
Se o NPC colidir com o player e eles estiverem na mesma altura, o NPC, ele irá inverter a direção.
Agora no evento de colisão com o obj_block coloque:
Se ele colidir com o bloco, ele inverterá a direção. Se passar por cima ou por baixo do bloco, ele continuará andando.
E por último, no evento Draw coloque:
Ele desenhará o NPC nos pontos x e y, diminuindo o ponto y pela altura.
E o NPC já está pronto. Ele possui movimentos aleatórios nas diagonais e colisão com os objetos.
Se o player pode pular e ter gravidade, qual o problema se um NPC também poder?
Agora iremos configurar o pulo e a gravidade do NPC:
No evento Create adicione o seguinte código:
zspeed=0;
Define a velocidade do pulo do NPC.
zgravity=0;
Define a gravidade do NPC.
zland=0;
Define a altura mínima do NPC.
No evento Step adicione o seguinte código:
Agora que foi tudo configurado, vamos declarar quando ocorrerá o pulo. Neste exemplo, ele será feito a cada 5 segundos, contados por um alarme.
No evento Create adicione o código:
Dispara o alarme 0 em 150 Steps(5 segundos).
No evento Alarm 0 coloque:
zspeed=7;
O NPC pulará com a velocidade 7.
alarm[0]=150;
Dispara o alarme 0 novamente em 150 Steps.
Agora está tudo pronto. Mas... quando o NPC pula por cima do obj_block, ele trava. Por que isso acontece?
Porque o bloco foi configurado para ficar sólido quando o player não estivesse em cima dele. Temos que reconfigurar isso, configurando-o a fazer o mesmo se o NPC estiver sobre ele.
No evento Step do obj_block haverá um código assim:
A única coisa que resta ao NPC fazer é andar nas plataformas móveis.
Adicione um evento de colisão com o obj_platform e coloque:
Se estiver sobre a plataforma, ele irá se mover conforme a hspeed e a vspeed da plataforma.
E este tutorial acaba aqui. Espero que tenham gostado da terceira parte. Ainda não sei quando vou fazer a quarta parte, e qual será o tema. Mas posso garantir que ela será feita!
さようなら!
Descrição: Como fazer NPCs terem inteligência artificial
Nível: Intermediário
Requerimentos: :gm8:Lite/Pro
Olá!
Aqui estamos na terceira parte dos tutoriais sobre jogos Isométricos. Nesse tutorial serão ensinados movimentos de NPCs.
Vamos Começar!
Se ainda não viu os outros tutoriais, seguem os links:
Parte 1 - Movimentação Básica
Parte 2 - Blocos Flutuantes e Plataformas Móveis
1- Movimentação Básica
Primeiramente, vamos fazer o NPC se mover para as diagonais, em direções randômicas.
Crie um sprite e chame-a de spr_npc. Carregue esta imagem:
Crie mais uma sprite e chame-a de mask_npc. Carregue esta imagem:
Crie um objeto chamado obj_npc. Coloque nele a sprite spr_npc e a mask mask_npc.
No evento Create coloque:
- Código:
z=0;
hspeed=choose(2,-2);
vspeed=choose(1,-1);
z=0;
Define a altura do NPC. Pode ser alterada para fazer NPCs de diferentes alturas.
hspeed=choose(2,-2);
vspeed=choose(1,-1);
Define as velocidades horizontal e vertical, usando valores aleatórios, alterando a direção dos do NPC.
No evento Step coloque:
- Código:
if(place_snapped(32,16))
{
hspeed=choose(hspeed,hspeed,2,-2);
vspeed=choose(vspeed,vspeed,1,-1);
}
depth=-y-z;
if(place_snapped(32,16) && z=zland)
{
hspeed=choose(hspeed,hspeed,2,-2);
vspeed=choose(vspeed,vspeed,1,-1);
}
Se estiver alinhado a grade (32x16) e estiver no chão, ele poderá escolher outra direção, ou continuar na mesma. Repare que as variáveis hspeed e vspeed aparecem duas vezes nos respectivos códigos. Isso faz com que o objeto não mude de direção a toda hora, continuando no trajeto em que está.
depth=-y-z;
Define a profundidade do objeto, relacionando a posição y e sua altura.
Adicione um evento de colisão com o obj_player e coloque:
- Código:
if(z=other.z)
{
hspeed=-hspeed;
vspeed=-vspeed;
}
Se o NPC colidir com o player e eles estiverem na mesma altura, o NPC, ele irá inverter a direção.
Agora no evento de colisão com o obj_block coloque:
- Código:
if(z<other.z && z>=other.z-16)
{
hspeed=-hspeed;
vspeed=-vspeed;
}
Se ele colidir com o bloco, ele inverterá a direção. Se passar por cima ou por baixo do bloco, ele continuará andando.
E por último, no evento Draw coloque:
- Código:
draw_sprite(sprite_index,image_index,x,y-z);
Ele desenhará o NPC nos pontos x e y, diminuindo o ponto y pela altura.
E o NPC já está pronto. Ele possui movimentos aleatórios nas diagonais e colisão com os objetos.
2- Pulo e Gravidade
Se o player pode pular e ter gravidade, qual o problema se um NPC também poder?
Agora iremos configurar o pulo e a gravidade do NPC:
No evento Create adicione o seguinte código:
- Código:
zspeed=0;
zgravity=0;
zland=0;
zspeed=0;
Define a velocidade do pulo do NPC.
zgravity=0;
Define a gravidade do NPC.
zland=0;
Define a altura mínima do NPC.
No evento Step adicione o seguinte código:
- Código:
z+=zspeed;
zspeed-=zgravity;
if(z>zland) zgravity=0.5;
if(z<zland)
{
z=zland;
zgravity=0;
}
if(!place_meeting(x,y,obj_block)) zland=0;
Agora que foi tudo configurado, vamos declarar quando ocorrerá o pulo. Neste exemplo, ele será feito a cada 5 segundos, contados por um alarme.
No evento Create adicione o código:
- Código:
alarm[0]=150;
Dispara o alarme 0 em 150 Steps(5 segundos).
No evento Alarm 0 coloque:
- Código:
zspeed=7;
alarm[0]=150;
zspeed=7;
O NPC pulará com a velocidade 7.
alarm[0]=150;
Dispara o alarme 0 novamente em 150 Steps.
Agora está tudo pronto. Mas... quando o NPC pula por cima do obj_block, ele trava. Por que isso acontece?
Porque o bloco foi configurado para ficar sólido quando o player não estivesse em cima dele. Temos que reconfigurar isso, configurando-o a fazer o mesmo se o NPC estiver sobre ele.
No evento Step do obj_block haverá um código assim:
- Código:
if(obj_player.z>=z) solid=false;
- Código:
if(obj_player.z>=z || obj_npc.z>=z) solid=false;
3- NPCs em Plataformas Móveis
A única coisa que resta ao NPC fazer é andar nas plataformas móveis.
Adicione um evento de colisão com o obj_platform e coloque:
- Código:
iif(z>=other.z) zland=other.z;
if(z==other.z)
{
hspeed=other.hspeed;
vspeed=other.vspeed;
}
Se estiver sobre a plataforma, ele irá se mover conforme a hspeed e a vspeed da plataforma.
E este tutorial acaba aqui. Espero que tenham gostado da terceira parte. Ainda não sei quando vou fazer a quarta parte, e qual será o tema. Mas posso garantir que ela será feita!
さようなら!
Última edição por JV Justino em Dom 21 Jul 2013, 16:14, editado 5 vez(es)
JV Justino- Games Ranking :
Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios :
x 0 x 13 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Isométrico] Parte 3 - Movimentação de NPCs
@_@ tuto muito bem feito e muito bem explicado
@essa aula
não vou poder fazer o exemplo pois to sem tempo
(idéia*crie uma engine pra cada tutorial e poste ao final ou inicio deles )
@ultima aula
fiz o exemplo e deu tudo certin
@essa aula
não vou poder fazer o exemplo pois to sem tempo
(idéia*crie uma engine pra cada tutorial e poste ao final ou inicio deles )
@ultima aula
fiz o exemplo e deu tudo certin
Re: [Isométrico] Parte 3 - Movimentação de NPCs
Muito obrigado!
Como já disse no outro tópico, não vou fazer engines, porque se eu postar a engine ninguém vai sequer olhar o tutorial.
Talvez eu faça um exemplo e jogo com tudo o que foi ensinado nos tutoriais. Talvez
Como já disse no outro tópico, não vou fazer engines, porque se eu postar a engine ninguém vai sequer olhar o tutorial.
Talvez eu faça um exemplo e jogo com tudo o que foi ensinado nos tutoriais. Talvez
JV Justino- Games Ranking :
Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios :
x 0 x 13 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Isométrico] Parte 3 - Movimentação de NPCs
Estou sem palavras, você ta se destacando demais no fórum, seus tutoriais são perfeitos *-* , você poderia abrir um tópico ou qualquer coisa, sei lá para o público escolher algum tutorial. Muito bom, parabéns.
Re: [Isométrico] Parte 3 - Movimentação de NPCs
Muito obrigado Allison!.:Allison:. escreveu:Estou sem palavras, você ta se destacando demais no fórum, seus tutoriais são perfeitos *-* , você poderia abrir um tópico ou qualquer coisa, sei lá para o público escolher algum tutorial. Muito bom, parabéns.
Talvez quando eu tiver mais tutoriais eu crio um tópico com todos os meus tutoriais. Por enquanto, quem quiser ver meus tutoriais, os links estão na minha assinatura.
JV Justino- Games Ranking :
Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios :
x 0 x 13 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Isométrico] Parte 3 - Movimentação de NPCs
Mais um ótimo tutorial! Vc está suprindo a necessidade de tutoriais sobre jogos isométricos. Estou gostando d+. espero fazer um jogo com esses tutoriais. Continue fazendo sobre esse tema, pois ele é um tanto complexo e um bom tutorial sempre vai bem!
andreh- Games Ranking :
Notas recebidas : C
Data de inscrição : 09/03/2011
Reputação : 3
Número de Mensagens : 183
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Isométrico] Parte 3 - Movimentação de NPCs
Aqui no fórum existem pouquíssimos tutoriais sobre jogos isométricos, e a maioria é muito simples e repetitiva. Jogos isométricos parecem ser complexos, mas não são, pelo menos não muito. Se você entender todos os códigos será muito fácil, e você poderá acrescentar mais coisas aos jogos baseando-se no que você aprendeu.andreh escreveu:Mais um ótimo tutorial! Vc está suprindo a necessidade de tutoriais sobre jogos isométricos. Estou gostando d+. espero fazer um jogo com esses tutoriais. Continue fazendo sobre esse tema, pois ele é um tanto complexo e um bom tutorial sempre vai bem!
Espero que os tutoriais ajudem você no futuro, e ajudem muito mais gente!
JV Justino- Games Ranking :
Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios :
x 0 x 13 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Isométrico] Parte 3 - Movimentação de NPCs
muito bom adoro seus tutorias de isométrico ;)
pretendo no futuro fazer um jogo isometrico e darei créditos a você mais quando é que vai postar a engine?faltam muitas partes par completar o tutorial?
pretendo no futuro fazer um jogo isometrico e darei créditos a você mais quando é que vai postar a engine?faltam muitas partes par completar o tutorial?
S.L- Data de inscrição : 04/07/2011
Reputação : 0
Número de Mensagens : 8
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Isométrico] Parte 3 - Movimentação de NPCs
Pois é, vc foi o primeiro q fez um tutorial "simples" (eu já vi um tutorial mto dificil) e explicou mto bem, por isso estou gostando!
andreh- Games Ranking :
Notas recebidas : C
Data de inscrição : 09/03/2011
Reputação : 3
Número de Mensagens : 183
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Isométrico] Parte 3 - Movimentação de NPCs
Ainda não defini quantas partes ele terá. Sempre que vier algo na mente, eu logo farei um tutorial.S.L escreveu:muito bom adoro seus tutorias de isométrico ;)
pretendo no futuro fazer um jogo isometrico e darei créditos a você mais quando é que vai postar a engine?faltam muitas partes par completar o tutorial?
Sobre a engine: no último tutorial, eu abrirei uma enquete para saber quem concorda em ser feita uma engine, e quem discorda. Isso porque, se eu postar a engine, ninguém irá ler os tutoriais. Dependendo do resultado da enquete, eu faço uma engine com todos os elementos que foram ensinados.
Muito obrigado!
JV Justino- Games Ranking :
Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios :
x 0 x 13 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Isométrico] Parte 3 - Movimentação de NPCs
Sim.Já vi o 1º e o 2º.
Se esse for o problema , como faço para consertar.
Sou iniciante não sei muita coisa.
Se esse for o problema , como faço para consertar.
Sou iniciante não sei muita coisa.
Última edição por Ives10 em Qua 08 Fev 2012, 14:41, editado 1 vez(es)
Ives10- Data de inscrição : 08/02/2012
Reputação : 1
Número de Mensagens : 13
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Isométrico] Parte 3 - Movimentação de NPCs
Hum...
Você seguiu tudo direitinho, desde o primeiro tutorial?
Parece que o objeto não está reconhecendo a variável z do player.
Ambos estão na room?
Você seguiu tudo direitinho, desde o primeiro tutorial?
Parece que o objeto não está reconhecendo a variável z do player.
Ambos estão na room?
JV Justino- Games Ranking :
Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios :
x 0 x 13 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Isométrico] Parte 3 - Movimentação de NPCs
Sim.Já vi o 1º e o 2º .
Se esse for o problema , como faço para consertar.
Sou iniciante não sei muita coisa.
Se esse for o problema , como faço para consertar.
Sou iniciante não sei muita coisa.
Ives10- Data de inscrição : 08/02/2012
Reputação : 1
Número de Mensagens : 13
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Isométrico] Parte 3 - Movimentação de NPCs
Em qual objeto está ocorrendo o erro? E quando ele ocorre?Ives10 escreveu:Sim.Já vi o 1º e o 2º .
Se esse for o problema , como faço para consertar.
Sou iniciante não sei muita coisa.
JV Justino- Games Ranking :
Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios :
x 0 x 13 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Isométrico] Parte 3 - Movimentação de NPCs
Oi.Valeu pela ajuda.
Já consegui consertar.
Era o que vc tinha dito antes.
A NPC não estava na room.
Vlw
Já consegui consertar.
Era o que vc tinha dito antes.
A NPC não estava na room.
Vlw
Ives10- Data de inscrição : 08/02/2012
Reputação : 1
Número de Mensagens : 13
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» [Isométrico] Parte 1 - Movimentação Básica
» npcs em um game online
» conversar com npcs ( como fazer )
» [Resolvido]Quero Fazer NPCS
» 3D de jogo isométrico
» npcs em um game online
» conversar com npcs ( como fazer )
» [Resolvido]Quero Fazer NPCS
» 3D de jogo isométrico
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos