A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Unity 3D Inteligência Artificial

Apresentações semelhantes


Apresentação em tema: "Unity 3D Inteligência Artificial"— Transcrição da apresentação:

1 Unity 3D Inteligência Artificial

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 Visão Geral Estados Inicializa Foge Patrulha Vê player
Morre Ataca

6 Unity3D : IA Explodindo Bolhas: Ataca Decide Detalhando ataque Ataque2
Abaixa Ataque1 Move Lateral Atira

7 Unity3D : IA Detalhando: Regras para mudança de estados Decide ataque
Patrulha Random: 30% Distancia < 300 Random: 70% Vê player Distancia > 500 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 Explodindo Bolhas: Detalhando Patrulha Vai
Ponto1 Observa Observa Vai Ponto2 Ataque1

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


Carregar ppt "Unity 3D Inteligência Artificial"

Apresentações semelhantes


Anúncios Google