GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Problema ao entrar por uma porta e voltar por ela
por 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

Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por JV Justino Dom 03 Jul 2011, 20:39

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


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: [Isométrico] Parte 3 - Movimentação de NPCs Ball2e
Crie mais uma sprite e chame-a de mask_npc. Carregue esta imagem: [Isométrico] Parte 3 - Movimentação de NPCs Maskh

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

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;
-Explicando-

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;
}
-Explicando-

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;
}
-Explicando-

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

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;
-Explicado-

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;
Os códigos são iguais o do player, e foram explicados no primeiro tutorial.



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;
-Explicando-

Dispara o alarme 0 em 150 Steps(5 segundos).

No evento Alarm 0 coloque:
Código:
zspeed=7;
alarm[0]=150;
-Explicando-

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;
Substitua por:
Código:
if(obj_player.z>=z || obj_npc.z>=z) solid=false;
Assim ele não ficará mais sólido, evitando que o NPC trave sobre ele.


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;
}
-Explicando-

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
JV Justino

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 13 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por Biemorth Dom 03 Jul 2011, 20:51

@_@ 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 Happy)
@ultima aula
fiz o exemplo e deu tudo certin Happy
Biemorth
Biemorth

Games Ranking : Sem avaliações

Data de inscrição : 23/09/2010
Reputação : 4
Número de Mensagens : 283
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://facebook.com/playtimers

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por JV Justino Dom 03 Jul 2011, 20:57

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
JV Justino
JV Justino

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 13 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por .:Allison:. Dom 03 Jul 2011, 21:23

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.
.:Allison:.
.:Allison:.

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 25/07/2010
Reputação : 4
Número de Mensagens : 630
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 14 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://clubmaker.forumeiros.com

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por JV Justino Seg 04 Jul 2011, 14:20

.: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.
Muito obrigado Allison!

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.

flw
JV Justino
JV Justino

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 13 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por andreh Seg 04 Jul 2011, 15:25

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
andreh

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 09/03/2011
Reputação : 3
Número de Mensagens : 183
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por JV Justino Seg 04 Jul 2011, 15:31

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!
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.

Espero que os tutoriais ajudem você no futuro, e ajudem muito mais gente!

flw
JV Justino
JV Justino

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 13 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por S.L Seg 04 Jul 2011, 15:32

muito bom adoro seus tutorias de isométrico ;)
pretendo no futuro fazer um jogo isometrico e darei créditos a você Razz mais quando é que vai postar a engine?faltam muitas partes par completar o tutorial?
S.L
S.L

Data de inscrição : 04/07/2011
Reputação : 0
Número de Mensagens : 8
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por andreh Seg 04 Jul 2011, 15:34

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
andreh

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 09/03/2011
Reputação : 3
Número de Mensagens : 183
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por JV Justino Seg 04 Jul 2011, 15:39

S.L escreveu:muito bom adoro seus tutorias de isométrico ;)
pretendo no futuro fazer um jogo isometrico e darei créditos a você Razz mais quando é que vai postar a engine?faltam muitas partes par completar o tutorial?
Ainda não defini quantas partes ele terá. Sempre que vier algo na mente, eu logo farei um 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
JV Justino

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 13 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por Ives10 Qua 08 Fev 2012, 14:04

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.


Última edição por Ives10 em Qua 08 Fev 2012, 14:41, editado 1 vez(es)
Ives10
Ives10

Data de inscrição : 08/02/2012
Reputação : 1
Número de Mensagens : 13
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por JV Justino Qua 08 Fev 2012, 14:34

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?

flw
JV Justino
JV Justino

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 13 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por Ives10 Qua 08 Fev 2012, 14:54

Sim.Já vi o 1º e o 2º cheers .
Se esse for o problema , como faço para consertar.
Sou iniciante não sei muita coisa. confused
Ives10
Ives10

Data de inscrição : 08/02/2012
Reputação : 1
Número de Mensagens : 13
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por JV Justino Qua 08 Fev 2012, 21:15

Ives10 escreveu:Sim.Já vi o 1º e o 2º cheers .
Se esse for o problema , como faço para consertar.
Sou iniciante não sei muita coisa. confused
Em qual objeto está ocorrendo o erro? E quando ele ocorre?

flw
JV Justino
JV Justino

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 13 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por Ives10 Qua 08 Fev 2012, 22:00

Oi.Valeu pela ajuda.
Já consegui consertar.
Era o que vc tinha dito antes.
A NPC não estava na room.
Vlw cheers
Ives10
Ives10

Data de inscrição : 08/02/2012
Reputação : 1
Número de Mensagens : 13
Prêmios : [Isométrico] Parte 3 - Movimentação de NPCs Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Isométrico] Parte 3 - Movimentação de NPCs Empty Re: [Isométrico] Parte 3 - Movimentação de NPCs

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos