SlideShare ist ein Scribd-Unternehmen logo
1 von 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; 
} 
}

Weitere ähnliche Inhalte

Mehr von 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
 

Kürzlich hochgeladen

Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptxCópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptxSilvana Silva
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.denisecompasso2
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxAntonioVieira539017
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfAutonoma
 
Renascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDFRenascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDFRafaelaMartins72608
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPaulaYaraDaasPedro
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptxMarlene Cunhada
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptxJssicaCassiano2
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdfjacquescardosodias
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Centro Jacques Delors
 
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...MariaCristinaSouzaLe1
 
classe gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptxclasse gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptxLuciana Luciana
 
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º anoRachel Facundo
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfamarianegodoi
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docPauloHenriqueGarciaM
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...DirceuNascimento5
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...azulassessoria9
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 

Kürzlich hochgeladen (20)

Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptxCópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Renascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDFRenascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDF
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdf
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
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...
 
classe gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptxclasse gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptx
 
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
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 

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