[INT] [Tutorial] IA Básica de TDS (Pt. 3)
Enviado: Sex Abr 29, 2016 12:54 am
Olá. Eu sou o Gonçalves e vim aqui ensinar o pouco que eu sei sobre Inteligência Artificial de jogos Top-down Shooter. Baixe o conteúdo do fim da 2ª Parte aqui:
http://www.mediafire.com/?lcsee7bdw2z2777
Tentarei deixar o mais claro possível para os leitores e estarei aceitando feedback.
SUMÁRIO
- Atores que pegam pickups
Nessa etapa criaremos mais alguns adicionais para uma IA um pouco mais inteligente.
ATORES QUE PEGAM PICKUPS
Primeiramente vamos criar um objeto chamado obj_stimpak. Usei essa sprite:
Na sua colisão com grupo_pessoas, teremos:
Código: Selecionar todos
with(other)
{
energia = min(100,energia+40)
}
instance_destroy()
Agora vamos à IA. Vamos usar o atr_inimigo. Abaixo da condição if viu_alvo = true, que se encontra no seu Step, adicionaremos seu else, que conterá:
Código: Selecionar todos
var pick_prox;
pick_prox = instance_nearest(x,y,obj_stimpak)
if distance_to_object(pick_prox) < percepcao and ! collision_line(x,y,pick_prox.x,pick_prox.y,grupo_objetos,0,0)
{
mp_potential_step(pick_prox.x,pick_prox.y,1.2+(velocidade*0.1),0)
olhar_para(pick_prox.x,pick_prox.y)
if patrulhar = true {patrulhando = false}
}
Ele irá guardar numa variável o pickup mais próximo, se não tiver nenhum objeto entre eles e tiver no seu alcance perceptivo, ele vai atrás do mesmo, desativando a patrulha se caso ele estivesse fazendo (assim como quando vê um alvo).
Se você não entendeu quando disse para colocar no else do viu_alvo = true. Insira no fim do Step essa condição para falso:
Código: Selecionar todos
if viu_alvo = false
{
var pick_prox;
pick_prox = instance_nearest(x,y,obj_stimpak)
if distance_to_object(pick_prox) < percepcao and ! collision_line(x,y,pick_prox.x,pick_prox.y,grupo_objetos,0,0)
{
mp_potential_step(pick_prox.x,pick_prox.y,1.2+(velocidade*0.1),0)
olhar_para(pick_prox.x,pick_prox.y)
if patrulhar = true {patrulhando = false}
}
}
Eu sei que o tutorial está pequeno, mas gostaria de sugestões para adicionar ao mesmo!
A engine final se encontra ASSIM por enquanto, mas conforme adicionar mais coisas ao tutorial irei atualizá-la.
OBRIGADO!