SlideShare uma empresa Scribd logo
Projeto de jogos RAD: 
Inteligência Artificial 
Parte 1 
Augusto Bülow
Unity3D : IA 
IA: Simular comportamento inteligente em 
elementos autômatos no jogo 
Planejamento básico: 
• O que o “robô” deve fazer? 
• Traduzir em estados 
– Separar ações individuais / diferentes 
– Criar mapa de estados
Unity3D : IA 
• Elementos com IA = máquina de estados 
Estados: 
Partes do comportamento 
Diferentes ações 
Tratados com códigos (partes) separados 
Controlar estados por variável * 
Criar regras para mudança de estados
Unity3D : IA 
Resumindo: 
1o passo: planejar o comportamento desejado 
2o passo: identificar estados – separar ações 
diferentes (partes do comportamento) 
3o passo: identificar mudança de estados – o que 
faz o robô mudar de um estado a outro 
Programar regras – testar - adaptar
Unity3D : IA 
Patrulha 
Vê player 
Foge 
Ataca 
Morre 
Inicializa 
Visão Geral Estados
Unity3D : IA 
Ataca Decide 
ataque 
Ataque1 
Move 
Lateral 
Ataque2 
Abaixa 
Atira 
Explodindo Bolhas: 
Detalhando
Unity3D : IA 
Detalhando: Regras para mudança de estados 
Patrulha 
Distancia < 300 
Vê player 
Distancia 
> 500 
Decide 
ataque 
Random: 
Random: 30% 
70% 
Ataque1 Ataque2
Unity3D : IA 
• Conhecendo-se os estados e planejando-se as 
regras para mudanças de estado inicia-se a 
programação 
- Traduzir o plano para código 
- Estados = controle por variável 
var estado = 0; 
.... 
if (estado == 1) { 
..... 
}
Unity3D : IA 
- Criar Cubo “inimigo” 
- Criar Script Inimigo1.js 
- Inimigo precisa cuidar de suas colisões, chão / cena 
- Definir e adicionar Collider: 
- RigidBody ou CharacterController 
- Tipo collider = códigos específicos de movimento 
- Nosso exemplo : CharacterController*
Unity3D : IA 
Patrulha Patrulha 
Vai 
Ponto1 Observa Vai 
Ataque1 
Ponto2 
Explodindo Bolhas: 
Detalhando 
Observa
Unity3D : IA 
- Patrulhar detalhado = 4 estados 
- Estados definíveis: 10, 11, 12, 13 = Patrulha 
- Criar /Planejar regras de mudança de estados 
- O que leva de um estado a outro? 
- EX: 
- Ir ponto1: checar distancia para o ponto 
- Espera / Observa: timer simples (tempo) 
- Inicia Ataque: player próximo inimigo (dist. min)
Unity3D : IA 
- Plano determinado = implementar código 
- Variáveis iniciais identificadas: 
var estado = 10; 
var distancia_ok = 1.0; 
var distancia_atual = 0.0; 
var ponto1 : Vector3; 
var ponto2 : Vector3; 
var velocidade : Vector3; 
var tempo = 0.0;
Unity3D : IA 
- Estado 10 : Ir ponto 1, perceber a chegada (distancia) 
if (estado == 10) { 
// virar / apontar para o ponto 
transform.LookAt(ponto1); 
transform.rotation.x = 0; 
transform.rotation.z = 0; 
// mover / andar = velocidade frente Z 
velocidade.x = 0; 
velocidade.y = 0; 
velocidade.z = 0.1; 
//Mudança de estado = distancia / chegou no ponto 
distancia_atual = Vector3.Distance(transform.position, ponto1); 
if (distancia_atual <= distancia_ok) { 
estado = 11; 
} 
}
Unity3D : IA 
- Centralizamos código de movimento: controle apenas por 
velocidade nos estados 
//transforma velocidade para direção atual 
velocidade = transform.TransformDirection(velocidade); 
//Movimento unificado : controla velocidade nos estados 
pointer = GetComponent(CharacterController); 
pointer.Move(velocidade);
Unity3D : IA 
- Estado 11: aguarda tempo / observa, parado 
if (estado == 11) { 
// parar = sem velocidade 
velocidade.x = 0; 
velocidade.y = 0; 
velocidade.z = 0; 
// Timer básico 
tempo += Time.deltaTime; 
if (tempo >= 1) { 
estado = 12; 
} 
}
Unity3D : IA 
- Start: inicialização básica, estado, pontos - destinos 
function Start() { 
//estado inicial 
estado = 10; 
//ponto 1: ex. posicao atual + variação 
ponto1 = transform.position; 
ponto1.z += 20; 
// ponto2: 
ponto2 = transform.position; 
ponto2.z -= 10; 
} 
- Criar estados 12 e 13 = Finalizar Patrulha Básica
Unity3D : IA 
- Ataque básico: percebe player perto = distância 
- (modo simplório) 
- Entra em estado de ataque 
- Regras adicionais atacando 
- Persegue player (anda na sua direção) 
- Distância mínima = tira saúde ( faz ataque) 
- Distância máxima = fugiu, volta a patrulha
Unity3D : IA 
- Implementando ataque: 
var distancia_player = 0.0; 
var distancia_ataca = 15; 
var distancia_hit = 2; 
var distancia_fugiu = 30; .... 
//Encontra player - multi uso 
player = GameObject.Find("Player"); 
//Ativa ATAQUE AUTO - POR DISTANCIA 
if (estado >= 10 && estado <= 13) { 
distancia_player = Vector3.Distance(transform.position, 
player.transform.position); 
if (distancia_player <= distancia_ataca) { 
estado = 20; 
} 
}
Unity3D : IA 
//20. ATAQUE 
if (estado == 20) { 
// virar / apontar para o player 
transform.LookAt(player.transform.position); 
transform.rotation.x = 0; 
transform.rotation.z = 0; 
// mover / andar = velocidade frente Z 
velocidade.x = 0; 
velocidade.y = 0; 
velocidade.z = 0.1; 
}
Unity3D : IA 
- Implementando regras adicionais do estado 
//20. ATAQUE – PERSEGUE PLAYER 
if (estado == 20) { 
.... 
distancia_player = Vector3.Distance(transform.position,player.transform.position); 
//Distancia fugiu = volta a patrulha 
if (distancia_player >= distancia_fugiu) { 
estado = 10; 
} 
}
Unity3D : IA 
- Implementando regras adicionais (2) do estado 
//20. ATAQUE – PERSEGUE PLAYER 
if (estado == 20) { 
.... 
distancia_player = Vector3.Distance(transform.position,player.transform.position); 
//Distancia hit = estado ataque real – tira energia, etc 
if (distancia_player <= distancia_hit) { 
estado = 21; 
} 
}
Unity3D : IA 
//21. ATAQUE - REAL 
if (estado == 21) { 
// para de andar 
velocidade = Vector3.zero; 
//anima - (simula anima - FAZ GIRO BASICO) 
aux_gira += 1 * Time.deltaTime; 
transform.Rotate(Vector3(0, 3, 0)); 
if (aux_gira >= 1) { estado = 10; } // volta patulha tempo 
//Criando efeito no player - acessa script dele, muda vars 
//empurra trás, cima - única vez, uso var para controle 
if (ataque_unico == 0) { 
player.GetComponent("Player-anima").forca_move.y = 0.3; 
player.GetComponent("Player-anima").forca_move.z = -2; 
ataque_unico =1; 
} 
}

Mais conteúdo relacionado

Mais de Marcos Batista

Aula maps
Aula mapsAula maps
Aula maps
Marcos Batista
 
Aula ia2
Aula ia2Aula ia2
Aula ia2
Marcos Batista
 
Aula gui
Aula guiAula gui
Aula gui
Marcos Batista
 
Aula disparos
Aula disparosAula disparos
Aula disparos
Marcos Batista
 
Aula disparos
Aula disparosAula disparos
Aula disparos
Marcos Batista
 
Aula anima-modelos
Aula anima-modelosAula anima-modelos
Aula anima-modelos
Marcos Batista
 
Aula anima1
Aula anima1Aula anima1
Aula anima1
Marcos Batista
 
Aula9 material
Aula9 materialAula9 material
Aula9 material
Marcos Batista
 
Aula8 instancias
Aula8 instanciasAula8 instancias
Aula8 instancias
Marcos Batista
 
Aula7 velocidade
Aula7 velocidadeAula7 velocidade
Aula7 velocidade
Marcos Batista
 
Aula6 colisao2
Aula6 colisao2Aula6 colisao2
Aula6 colisao2
Marcos Batista
 
Aula5 colisao1
Aula5 colisao1Aula5 colisao1
Aula5 colisao1
Marcos Batista
 
Aula4 debug
Aula4   debugAula4   debug
Aula4 debug
Marcos Batista
 
Aula3 input
Aula3   inputAula3   input
Aula3 input
Marcos Batista
 
Aula2 intro2
Aula2   intro2Aula2   intro2
Aula2 intro2
Marcos Batista
 
Aula1 intro
Aula1  introAula1  intro
Aula1 intro
Marcos Batista
 

Mais de Marcos Batista (16)

Aula maps
Aula mapsAula maps
Aula maps
 
Aula ia2
Aula ia2Aula ia2
Aula ia2
 
Aula gui
Aula guiAula gui
Aula gui
 
Aula disparos
Aula disparosAula disparos
Aula disparos
 
Aula disparos
Aula disparosAula disparos
Aula disparos
 
Aula anima-modelos
Aula anima-modelosAula anima-modelos
Aula anima-modelos
 
Aula anima1
Aula anima1Aula anima1
Aula anima1
 
Aula9 material
Aula9 materialAula9 material
Aula9 material
 
Aula8 instancias
Aula8 instanciasAula8 instancias
Aula8 instancias
 
Aula7 velocidade
Aula7 velocidadeAula7 velocidade
Aula7 velocidade
 
Aula6 colisao2
Aula6 colisao2Aula6 colisao2
Aula6 colisao2
 
Aula5 colisao1
Aula5 colisao1Aula5 colisao1
Aula5 colisao1
 
Aula4 debug
Aula4   debugAula4   debug
Aula4 debug
 
Aula3 input
Aula3   inputAula3   input
Aula3 input
 
Aula2 intro2
Aula2   intro2Aula2   intro2
Aula2 intro2
 
Aula1 intro
Aula1  introAula1  intro
Aula1 intro
 

Último

Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptxTreinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
MarcosPaulo777883
 
Redação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptxRedação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptx
DECIOMAURINARAMOS
 
A QUESTÃO ANTROPOLÓGICA: O QUE SOMOS OU QUEM SOMOS.pdf
A QUESTÃO ANTROPOLÓGICA: O QUE SOMOS OU QUEM SOMOS.pdfA QUESTÃO ANTROPOLÓGICA: O QUE SOMOS OU QUEM SOMOS.pdf
A QUESTÃO ANTROPOLÓGICA: O QUE SOMOS OU QUEM SOMOS.pdf
AurelianoFerreirades2
 
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdfUFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
Manuais Formação
 
Rimas, Luís Vaz de Camões. pptx
Rimas, Luís Vaz de Camões.          pptxRimas, Luís Vaz de Camões.          pptx
Rimas, Luís Vaz de Camões. pptx
TomasSousa7
 
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
YeniferGarcia36
 
Potenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números RacionaisPotenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números Racionais
wagnermorais28
 
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
Eró Cunha
 
Atividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º anoAtividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º ano
fernandacosta37763
 
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxPP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
MessiasMarianoG
 
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
LucianaCristina58
 
Testes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdfTestes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdf
lveiga112
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
joseanesouza36
 
UFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdfUFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdf
Manuais Formação
 
epidemias endemia-pandemia-e-epidemia (1).ppt
epidemias endemia-pandemia-e-epidemia (1).pptepidemias endemia-pandemia-e-epidemia (1).ppt
epidemias endemia-pandemia-e-epidemia (1).ppt
MarceloMonteiro213738
 
karl marx biografia resumida com suas obras e história de vida
karl marx biografia resumida com suas obras e história de vidakarl marx biografia resumida com suas obras e história de vida
karl marx biografia resumida com suas obras e história de vida
KleginaldoPaz2
 
05-os-pre-socraticos sociologia-28-slides.pptx
05-os-pre-socraticos sociologia-28-slides.pptx05-os-pre-socraticos sociologia-28-slides.pptx
05-os-pre-socraticos sociologia-28-slides.pptx
ValdineyRodriguesBez1
 
GÊNERO TEXTUAL - POEMA.pptx
GÊNERO      TEXTUAL     -     POEMA.pptxGÊNERO      TEXTUAL     -     POEMA.pptx
GÊNERO TEXTUAL - POEMA.pptx
Marlene Cunhada
 
Vogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantilVogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantil
mamaeieby
 

Último (20)

Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptxTreinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
 
Redação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptxRedação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptx
 
A QUESTÃO ANTROPOLÓGICA: O QUE SOMOS OU QUEM SOMOS.pdf
A QUESTÃO ANTROPOLÓGICA: O QUE SOMOS OU QUEM SOMOS.pdfA QUESTÃO ANTROPOLÓGICA: O QUE SOMOS OU QUEM SOMOS.pdf
A QUESTÃO ANTROPOLÓGICA: O QUE SOMOS OU QUEM SOMOS.pdf
 
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdfUFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
 
Rimas, Luís Vaz de Camões. pptx
Rimas, Luís Vaz de Camões.          pptxRimas, Luís Vaz de Camões.          pptx
Rimas, Luís Vaz de Camões. pptx
 
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
 
Potenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números RacionaisPotenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números Racionais
 
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
 
Atividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º anoAtividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º ano
 
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxPP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
 
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
 
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
 
Testes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdfTestes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdf
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
 
UFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdfUFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdf
 
epidemias endemia-pandemia-e-epidemia (1).ppt
epidemias endemia-pandemia-e-epidemia (1).pptepidemias endemia-pandemia-e-epidemia (1).ppt
epidemias endemia-pandemia-e-epidemia (1).ppt
 
karl marx biografia resumida com suas obras e história de vida
karl marx biografia resumida com suas obras e história de vidakarl marx biografia resumida com suas obras e história de vida
karl marx biografia resumida com suas obras e história de vida
 
05-os-pre-socraticos sociologia-28-slides.pptx
05-os-pre-socraticos sociologia-28-slides.pptx05-os-pre-socraticos sociologia-28-slides.pptx
05-os-pre-socraticos sociologia-28-slides.pptx
 
GÊNERO TEXTUAL - POEMA.pptx
GÊNERO      TEXTUAL     -     POEMA.pptxGÊNERO      TEXTUAL     -     POEMA.pptx
GÊNERO TEXTUAL - POEMA.pptx
 
Vogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantilVogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantil
 

Aula ia

  • 1. Projeto de jogos RAD: Inteligência Artificial Parte 1 Augusto Bülow
  • 2. Unity3D : IA IA: Simular comportamento inteligente em elementos autômatos no jogo Planejamento básico: • O que o “robô” deve fazer? • Traduzir em estados – Separar ações individuais / diferentes – Criar mapa de estados
  • 3. Unity3D : IA • Elementos com IA = máquina de estados Estados: Partes do comportamento Diferentes ações Tratados com códigos (partes) separados Controlar estados por variável * Criar regras para mudança de estados
  • 4. Unity3D : IA Resumindo: 1o passo: planejar o comportamento desejado 2o passo: identificar estados – separar ações diferentes (partes do comportamento) 3o passo: identificar mudança de estados – o que faz o robô mudar de um estado a outro Programar regras – testar - adaptar
  • 5. Unity3D : IA Patrulha Vê player Foge Ataca Morre Inicializa Visão Geral Estados
  • 6. Unity3D : IA Ataca Decide ataque Ataque1 Move Lateral Ataque2 Abaixa Atira Explodindo Bolhas: Detalhando
  • 7. Unity3D : IA Detalhando: Regras para mudança de estados Patrulha Distancia < 300 Vê player Distancia > 500 Decide ataque Random: Random: 30% 70% Ataque1 Ataque2
  • 8. Unity3D : IA • Conhecendo-se os estados e planejando-se as regras para mudanças de estado inicia-se a programação - Traduzir o plano para código - Estados = controle por variável var estado = 0; .... if (estado == 1) { ..... }
  • 9. Unity3D : IA - Criar Cubo “inimigo” - Criar Script Inimigo1.js - Inimigo precisa cuidar de suas colisões, chão / cena - Definir e adicionar Collider: - RigidBody ou CharacterController - Tipo collider = códigos específicos de movimento - Nosso exemplo : CharacterController*
  • 10. Unity3D : IA Patrulha Patrulha Vai Ponto1 Observa Vai Ataque1 Ponto2 Explodindo Bolhas: Detalhando Observa
  • 11. Unity3D : IA - Patrulhar detalhado = 4 estados - Estados definíveis: 10, 11, 12, 13 = Patrulha - Criar /Planejar regras de mudança de estados - O que leva de um estado a outro? - EX: - Ir ponto1: checar distancia para o ponto - Espera / Observa: timer simples (tempo) - Inicia Ataque: player próximo inimigo (dist. min)
  • 12. Unity3D : IA - Plano determinado = implementar código - Variáveis iniciais identificadas: var estado = 10; var distancia_ok = 1.0; var distancia_atual = 0.0; var ponto1 : Vector3; var ponto2 : Vector3; var velocidade : Vector3; var tempo = 0.0;
  • 13. Unity3D : IA - Estado 10 : Ir ponto 1, perceber a chegada (distancia) if (estado == 10) { // virar / apontar para o ponto transform.LookAt(ponto1); transform.rotation.x = 0; transform.rotation.z = 0; // mover / andar = velocidade frente Z velocidade.x = 0; velocidade.y = 0; velocidade.z = 0.1; //Mudança de estado = distancia / chegou no ponto distancia_atual = Vector3.Distance(transform.position, ponto1); if (distancia_atual <= distancia_ok) { estado = 11; } }
  • 14. Unity3D : IA - Centralizamos código de movimento: controle apenas por velocidade nos estados //transforma velocidade para direção atual velocidade = transform.TransformDirection(velocidade); //Movimento unificado : controla velocidade nos estados pointer = GetComponent(CharacterController); pointer.Move(velocidade);
  • 15. Unity3D : IA - Estado 11: aguarda tempo / observa, parado if (estado == 11) { // parar = sem velocidade velocidade.x = 0; velocidade.y = 0; velocidade.z = 0; // Timer básico tempo += Time.deltaTime; if (tempo >= 1) { estado = 12; } }
  • 16. Unity3D : IA - Start: inicialização básica, estado, pontos - destinos function Start() { //estado inicial estado = 10; //ponto 1: ex. posicao atual + variação ponto1 = transform.position; ponto1.z += 20; // ponto2: ponto2 = transform.position; ponto2.z -= 10; } - Criar estados 12 e 13 = Finalizar Patrulha Básica
  • 17. Unity3D : IA - Ataque básico: percebe player perto = distância - (modo simplório) - Entra em estado de ataque - Regras adicionais atacando - Persegue player (anda na sua direção) - Distância mínima = tira saúde ( faz ataque) - Distância máxima = fugiu, volta a patrulha
  • 18. Unity3D : IA - Implementando ataque: var distancia_player = 0.0; var distancia_ataca = 15; var distancia_hit = 2; var distancia_fugiu = 30; .... //Encontra player - multi uso player = GameObject.Find("Player"); //Ativa ATAQUE AUTO - POR DISTANCIA if (estado >= 10 && estado <= 13) { distancia_player = Vector3.Distance(transform.position, player.transform.position); if (distancia_player <= distancia_ataca) { estado = 20; } }
  • 19. Unity3D : IA //20. ATAQUE if (estado == 20) { // virar / apontar para o player transform.LookAt(player.transform.position); transform.rotation.x = 0; transform.rotation.z = 0; // mover / andar = velocidade frente Z velocidade.x = 0; velocidade.y = 0; velocidade.z = 0.1; }
  • 20. Unity3D : IA - Implementando regras adicionais do estado //20. ATAQUE – PERSEGUE PLAYER if (estado == 20) { .... distancia_player = Vector3.Distance(transform.position,player.transform.position); //Distancia fugiu = volta a patrulha if (distancia_player >= distancia_fugiu) { estado = 10; } }
  • 21. Unity3D : IA - Implementando regras adicionais (2) do estado //20. ATAQUE – PERSEGUE PLAYER if (estado == 20) { .... distancia_player = Vector3.Distance(transform.position,player.transform.position); //Distancia hit = estado ataque real – tira energia, etc if (distancia_player <= distancia_hit) { estado = 21; } }
  • 22. Unity3D : IA //21. ATAQUE - REAL if (estado == 21) { // para de andar velocidade = Vector3.zero; //anima - (simula anima - FAZ GIRO BASICO) aux_gira += 1 * Time.deltaTime; transform.Rotate(Vector3(0, 3, 0)); if (aux_gira >= 1) { estado = 10; } // volta patulha tempo //Criando efeito no player - acessa script dele, muda vars //empurra trás, cima - única vez, uso var para controle if (ataque_unico == 0) { player.GetComponent("Player-anima").forca_move.y = 0.3; player.GetComponent("Player-anima").forca_move.z = -2; ataque_unico =1; } }