Bom, nesse tutorial eu vou ensinar uma coisa muito útil e bem procurada: A linha de visão do inimigo. Vamos entender como uma variável mágica, a collision_line(x1,y1,x2,y2,obj,prec,notme), funciona, e com ela, faremos nosso inimigo começar a nos caçar apenas quando consegue nos ver.
Vamos lá?
Download do resultado: Clique aqui!
0. Objetivo do tutorial
1. Preparativos
2. Configurando os objetos
3. Testando4. Considerações finais
0. Objetivo do tutorial:
Criarmos uma linha que liga o jogador e o inimigo e indica a visão do próprio. Se o inimigo ver o jogador, a linha fica vermelha, se não, verde.
Porém, quando o inimigo parar de ver o jogador, queremos que ele continue procurando por um certo tempo o jogador até desistir, então também programaremos isso.
1. Preparativos
Primeiro, crie os seguintes objetos:
- draw_objeto
- jogador
- inimigo
- parede
Então especifique qualquer sprite para eles. De preferência 32x32 e todas quadradas.
2. Configurando os objetos:
Primeiro, vamos configurar a linha de visão do inimigo. No draw event do draw_objeto, coloque o seguinte código:
if collision_line(self.x,self.y,jogador.x,jogador.y,parede,0,1) //Se o inimigo não está vendo o jogador, ou seja, tem uma parede na frente...Agora a linha de visão visual do inimigo está completa. Lembre-se que toda a parte de cima, assim como o objeto draw_objeto não serão normalmente necessário em seus jogos. Isso só servirá para você entender como vai funcionar a visão do nosso inimigo.
draw_set_color(c_green)//A linha ficará verde
else //Se não...
draw_set_color(c_red) //A linha ficará vermelha. Corre!!
draw_line_width(jogador.x,jogador.y,inimigo.x,inimigo.y,3) //Desenha a linha que liga o jogador e o inimigo
Agora, vamos programar o nosso inimigo para caçar o nosso herói caso ele o veja. No create event do nosso inimigo, coloque:
E no step event, coloque:seguir =0
if !collision_line(self.x,self.y,jogador.x,jogador.y,parede,0,1) //Se o inimigo está vendo o jogador...Dica: Se você quiser adicionar um limite na visão do inimigo de distância, basta colocar if distance_to_object(jogador) <=qualquer_distancia no inicio do código acima.
seguir =150
if seguir >0 //Se ele tiver visto o jogador...
{
seguir -=1
mp_potential_step(jogador.x,jogador.y,3,0) //Ele vai continuar seguindo o jogador até a variável seguir chegar à 0, desviando dos possíveis obstáculos.
}
Agora, no jogador, coloque um sistema de movimentação básico qualquer, apenas para testarmos.
Pronto! Agora tudo está configurado! Vamos ao teste?
3. Testando:
Agora crie uma room e espalhe algumas paredes pelo cenário. Coloque o jogador em uma ponta e o inimigo na outra, porém com obstáculos separando os dois.
Agora vamos ao teste, execute o jogo. Então, entre no campo de visão do inimigo, e quando ele começar a correr atrás de você, tente se esconder e espere ele desistir.
Se tudo deu certo, parabéns! Agora você já sabe como configurar uma visão inimiga!
4. Considerações finais:
Esse foi mais um rápido tutorial de GML. Lembre-se sempre: se for copiar, cite a fonte!
Então, é isso aí, até mais!
Nenhum comentário:
Postar um comentário
Dúvidas? Pergunte!
Ajudou? Agradece!
:]