Unity 3D Inteligência Artificial

Slides:



Advertisements
Apresentações semelhantes
Tópicos Especiais I: Colisão
Advertisements

IA Importância da IA em jogos Aplicações.
ERGONOMIA? Só se for no DIA-A-DIA!!!.
Animação de Personagens
Ataque no basquetebol.
Analisamos o movimento em cada uma das dimensões separadamente
1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005.
MÁQUINAS ELÉTRICAS Máquina de Corrente Contínua Fundamentos Iniciais
Inteligência Artificial Alex F. V. Machado. Tecnologia de Processamento da Informação que envolve processos de raciocínio, aprendizado e percepção. Winston.
Criando uma Animação.
IA em jogos modelagem de comportamento de personagens
Sistemas Baseados em Agentes
Busca Online Alexandra Barros Geber Ramalho. Busca Offine x Busca Online Busca Offline (ou planejamento clássico) –Computa a solução (do estado inicial.
Simulação de Sistemas Prof. MSc Sofia Mara de Souza AULA2.
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial Edirlei Soares de Lima Aula 18 – Aprendizado Por Reforço.
INF 1771 – Inteligência Artificial
UNIVERSIDADE CATÓLICA DE GOIÁS
Otimização Prof. Benedito C. Silva IRN UNIFEI
Monitoria de Introdução à Computação
Apresentação do TCC Jogo: Designo (DEMO).
Habilidades Motoras Rudimentares e Fundamentais
O Arremesso de Peso A bola oficial, feita de bronze, ferro fundidou ou chumbo, pesa: - Masculino: 7,26 e possui cerca de 12 cm de diâmetro; - Feminino:
Test of Gross Motor Development – 2ª ed
Vetores e movimento em duas dimensões
Prototipagem rápida de gameplay
Silas Juccelino Artulanez.  O que é?  Notação  Estado  Mudança de estado  Condições e ações  Diagramas subdivididos  Passos na construção  Verificação.
INF 1771 – Inteligência Artificial
SENDO UM PASTOR ACOLHEDOR
Computação Gráfica – Visibilidade
MOVIMENTO EM UMA LINHA RETA
BOTs Multiplayer Thiago Jamir e Silva – 20/07/2007.
Tópicos Avançados em Inteligência Artificial
Inteligência Artificial
TRABALHOS FEITOS COM O NOMAD NO GRACO
Escola Técnica Estadual Cícero Dias
Bem Vindos!!! Minicurso Unity 3D. Time is like a fuse, short and burning fast… Time is like a fuse, short and burning fast…
SELEÇÃO - USP HANDEBOL Feminino
Simulação do Movimento Pedestre em NetLogo Luís Paulo, n.º
PUCC 1 Tópicos em Sistemas Inteligentes. PUCC 2 Agenda - Aula 03 Buscas Agentes que Planejam.
Bem vindo ao jogo Batalha medieval Edição 2012 Clique aqui para começar a jogar.
Agentes Inteligentes Vicente Vieira Filho. Conversa de Hoje Introdução Objetivos (Benchmarks em SMA) Trabalhos Relacionados Solução Conclusão Trabalhos.
Atletismo Corrida com barreiras.
UMA ESTRATÉGIA DE REDE NEURAL APLICADA À GAME ESTILO BEAT’EM UP Mendes,T.M. e Almeida, A.G. RESUMO O projeto consiste no desenvolvimento de um jogo 2D.
Laboratório de Robótica Móvel Heitor Luis Polidoro Supervisor: Dr. Denis Fernando Wolf Navegação e Monitoramento de Ambientes Internos Utilizando Robôs.
Escola Secundária da Boa Nova 2013 Aplicações informáticas – Ensino da programação.
Inteligência Artificial I
Resolução de Problemas de Busca
1 Introdução aos Agentes Inteligentes Resolução de Problemas de Busca Flávia Barros.
Computação Gráfica – Animação
Jogos :D Equipe Broder {adriano, túlio, vicente}.
Vicente Filho Conversa de Hoje Introdução Objetivos Trabalhos Relacionados Solução Conclusão Trabalhos Futuros.
Violações INFRACÇÃO ÀS REGRAS = PERDA DA POSSE DE BOLA
Movimento circular uniforme Ponteiros de um relógio
Agentes Autonomos Vicente, Renan e Zé Carlos. Conversa de Hoje Introdução Objetivos (Benchmarks em SMA) Trabalhos Relacionados Solução Conclusão Trabalhos.
Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
Criação de um jogo de labirinto no UNITY (do tipo 2d e usando csharp)
ATLETISMO REVEZAMENTO.
RoboCup Criação de uma Equipa para Liga Mixed Reality do RoboCup Orientador: Prof. Dr. Luís Paulo Reis Hugo Mendes – 2.
Máquinas de estados finitos
13/14 Abril de 2004Trajectória de um Projéctil1 Trajectória de Projéctil - Funções Pedro Barahona DI/FCT/UNL Março 2004.
1- ARAÚJO, Rosana Ap. Nogueira. ENCONTROS PRÓXIMOS: CAPTURA GRAVITACIONAL E ESFERA DE INFLUÊNCIA.. XXVII Congresso de Iniciação Científica da UNESP III.
1º e 2º ano XII Olimpíadas das Cores Emílio Miotti.
Unity3D: Partículas. Unity3D Objetos especiais para efeitos Objetos resumidos = propriedades diferentes Renderização diferente Centenas / milhares de.
Unity 3D Character Controller e Triggers
Unity3D: Organização de Projetos
Unity 3D: Câmeras.
CMIP- Centro de Metrologia e Inovação em Processos Programa de Pós-Graduação em Odontologia Profª Andréa ANÁLISE DE REGRESSÃO LINEAR MÚLTIPLA.
Unity 3D Animações – Parte I
Transcrição da apresentação:

Unity 3D Inteligência Artificial

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

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

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

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