Como criar um NPC?

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Como criar um NPC?

Mensagem por Luiz Raizen em Dom 20 Jan 2013, 20:36

Olá galera, tenho uma enorme dúvida me incomodando, desde manhã eu estou mexendo no Game Maker 8,
estou criando um jogo de RPG do Pokémon, e estou com muitos problemas para criar um NPC, tipo queria
fazer com que o NPC ficasse andando aleatóriamente no cenário, em outras palavras os movimentos de um
NPC comum de RPG, mas quando o personagem encostar nele, enquanto eu tiver encostado se eu apertar
uma determinada tecla que no caso pretendia colocar a letra Z, o NPC olharia na direção do meu personagem
e aí abriria a caixa de mensagem da fala do NPC, por favor, eu imploro pra vcs Ç.Ç me dêm uma força pra
programar isso ta muito dificil, e pra piorar estou aprendendo aos poucos como mexer no GM, já uso ele faz
tempo, mas pra mim ainda é muito complicado. Por favor galera pesso a ajuda de quem ter uma idéia de
como programar um evento desse, e muito Obrigado desde já!

Luiz Raizen

Número de Mensagens : 39
Data de inscrição : 26/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como criar um NPC?

Mensagem por saim em Seg 21 Jan 2013, 07:53

O que você quer, na verdade, é um monte de eventos, não apenas um.
Pra movimentação aleatória, você pode escolher a direção com o choose, mesmo. Faça isso de tempos em tempos, porque colocar isso no step vai dar a impressão de um ataque epiléptico.
Mais legal ainda, se o cenário for dividido numa grid regular (como costuma acontecer nos jogos de pokemón), é usar uma engine dos fantasmas de pacman, ou seja, só permitir mudar de direção se estiver alinhado à grid.

Pro NPC se virar pra direção do jogador, basta colocar o código ao apertar a tecla (direction = point_direction(x, y, jogador.x, jogador.y), algo assim), mas pra permanecer virado, você precisa de um esboço de uma máquina de estados finitos.
Código:
SE (está conversando) {
fica firado pro jogador, com as caixas de diálogo, etc.
}
SENÃO {
fica caminhando, como se tivesse perdido as lentes de contato
}

Outra forma é colocar um tipo de "pausa" no jogo. Você faz o NPC virar para o jogador, grava a tela numa surface, desativa tudo e cria um objeto que mostra essa surface e faz o diálogo rolar por cima dela. As personagens vão estar "mortas", mas o jogador não vai perceber.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Como criar um NPC?

Mensagem por Rodrigo Santiago em Seg 21 Jan 2013, 08:07

Voce sabe criar scripts?
ingredientes
collision line
Uma variavel global
Uma variavel no NPC

Como fazer
NPC andar aleatoriamente

[create]
alarm[0]=30
[alarm0]
var temp
temp=choose(0,1,2,3,4)
hspeed=0;vspeed=0;
switch(temp){
case 0:hspeed=2;break;
case 1:hspeed=-2;break;
case 2:vspeed=2;break;
case 3:vspeed=-2;break;
}
alarm[0]=30

NPC detectar
[step]
if collision_line(x,y,lenghtdir_x(64,direction),lengthdir_y(64,direction){
global.pause=1
instance_create(textox,0,0)
}

obj textox(vc pode criar um para cada fala, ou usar uma variavel pra ele saber qual e a fala), vc faz pra esse objeto escrever o texto e na hora q vc apertar z o global.pause=0.
Nao esqueca de colocar um if em TODOS os objetos que se movem no jogo para eles pararem com global.pause

eu tbm to fazendo jogo de pokemon, na verdade 2, legend e dota.

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: Como criar um NPC?

Mensagem por Luiz Raizen em Sex 25 Jan 2013, 17:17

Muito obg galera, tive q reler os comentários de vcs, algumas vezes para entender, como disse estou aprendendo a mexer no game maker aos poucos, e ainda me enrolo muito na programação, mas acho q consegui entender, vou tentar programar, seguindo as instruções de vcs, e ver a q da mais certo no meu caso, se por acaso eu ñ acabar conseguindo eu dou um edit aki, muiiito obg!

Luiz Raizen

Número de Mensagens : 39
Data de inscrição : 26/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como criar um NPC?

Mensagem por vinians em Sex 25 Jan 2013, 18:06

Amigo, a maneira mais fácil que conheço para fazer isso é usando "paths". Você cria a path e ele fica andando. Quando passar perto dele você define a velocidade da path para zero, nisso ele para. Veja:
1-Va até o criador de paths e crie uma path qualquer para teste.
Agora no Evento Create do objeto do NCP:
Código:

path_start(sua_path, 1, 2, true); // atribui a path a instancia do NPC
Agora no Evento de Colisao voce coloca o codigo de acordo com a posicao. Isso depende dos seus sprites, por isso nao vou colocar exemplo pra voce. Mas voce pode usar a funcao point_direction() para calcular a direcao entre o NCP e o jogador.
Flws!

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Como criar um NPC?

Mensagem por Conteúdo patrocinado Hoje à(s) 11:46


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum