SlideShare una empresa de Scribd logo
1 de 22
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; 
} 
}

Más contenido relacionado

Más 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

8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
TailsonSantos1
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 

Último (20)

Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 

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; } }