Entrar
Últimos assuntos
» Problema ao entrar por uma porta e voltar por elapor aminaro Ontem à(s) 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
[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
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos