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
» player não consegue andar
por 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

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

- Tópicos semelhantes

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