Marcelo Henrique dos Santos Email: marcelosantos@outlook.com marcellohenrique@outlook.com Twitter: @marcellohsantos TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I Marcelo Henrique dos Santos
Aula 8 Tratamento de Colisão TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I Marcelo Henrique dos Santos
Criando Colisão Detectar colisões entre objetos é uma prática fundamental para (quase) todo jogo eletrônico. Além de detectar as colisões, é importante saber o que fazer, depois que elas ocorrem. As game engines, sempre possuem recursos para a detecção de colisões, e esse é um tópico muito importante de ser observado, antes de escolher qual Game Engine utilizar para seu projeto. Quando as colisões são detectadas, em geral, eventos são disparados pelo sistema. E esses eventos, podem ser capturados por objetos de jogo; que iniciam funções, para gerar a dinâmica do jogo. No Unity3D, as detecção de colisões são realizadas pela Engine de física, portanto, os elementos necessários para a detecção estão localizados no menu Componet >> Physics, são eles os Colliders e o Rigidbody. TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I Marcelo Henrique dos Santos
Definição Teórica: Colisão Interação física entre objetos do jogo; Rede invisível que está ao redor do objeto; Podemos trabalhar com a colisão imediatamente quando ocorre; Pode-se prever a colisão usando a técnica de Ray Casting;
Raycast (Script) Definição Teórica: Ray Casting http://docs.unity3d.com/documentation/scriptrefere nce/physics.raycast.html RaycastHit (Script) http://docs.unity3d.com/documentation/scriptrefere nce/raycasthit.html
Definição Teórica: Colisão
29/09/2015 7 Problema do frame miss O que acontece quando a bala é rápida demais?
Solução com Ray Casting
Tipos de colisores Cada um tem uma utilidade diferente; Component > Physics
Tipos de componentes de colisão Box: caixas, objetos, personagens; Sphere: objetos esféricos, personagens; Capsule: personagens do jogador; Mesh: malha do objeto, mais pesado computacionalmente; Wheel: roda, uso com veículos; Raycast: dispara raio de colisão, uso com veículos; Composto: união entre diversos colisores; Character Controller: componente de colisão para personagem do jogador;
29/09/2015 11 Static Collider X Rigidbody Static Collider é para objetos cuja física e colisão é menos necessária; Rigidbody é para objetos com física;
Rigidbody Tem massa, resistência do ar, gravidade, elasticidade baseada no material, etc; É possível movê-lo via scripting, mas deve ser evitado; Usar evento FixedUpdate, chamado em um tempo fixo;
Character Controller Não é fisicamente realista (isto pode ser bom!) O FPS Walker já aplica o Character Controller.
Character Controller Height: altura; Radius: raio; Slope Limit: limite de subida em rampas; Skin Width: quanto sobe em degraus; Min Move Distance: controla jitter; Center: posição;
Eventos de Colisão OnCollisionEnter: chama quando inicia uma colisão; OnCollisionStay: chamado uma vez por frame enquanto está se chocando no corpo; OnCollisionExit: chamado quando a colisão é finalizada; OnControllerColliderHit: colisão com character controller;
Ignorando a colisão Necessário quando se cria tiros e projéteis; Função Physics.IgnoreCollision;
Referência Link: http://unity3d.com/pt /learn/tutorials/modu les/beginner/physics /colliders
Criando Colisão Importe as 3 imagens que contém a textura para serem utilizadas no projeto: TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I Marcelo Henrique dos Santos
Criando Colisão Crie um terreno e posicione corretamente na Cena TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I Marcelo Henrique dos Santos
Criando Colisão Crie um terreno e posicione corretamente na Cena TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I Marcelo Henrique dos Santos
Adicione a textura no terreno Criando Colisão
Criando Colisão Crie um terreno e posicione corretamente na Cena TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I Marcelo Henrique dos Santos
Criando Colisão
Criando Colisão TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I Marcelo Henrique dos Santos
Criando Colisão Coloque 2 cubos em Cena e aplica em cada um deles uma das texturas, conforme imagem abaixo: TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I Marcelo Henrique dos Santos
Criando Colisão No cubo Jogador coloque o Rigidbody e após esse processo crie o Script Cube.cs
Referência Link: http://docs.unity3d.com/scriptrefere nce/input.getkey. html
Criando Colisão No cubo Jogador, coloque a TAG Player, conforme a imagem TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I Marcelo Henrique dos Santos
Crie o Script abaixo e teste o projeto Criando Colisão
Complete o código, conforme imagem
Aplicando Efeito Alterando o código: Podemos aplicar uma força no jogador no momento em que a colisão ocorre, ou seja o Jogador irá saltar com uma força, conforme a configuração abaixo:
ATIVIDADE CONTINUADA Crie um projeto conforme a imagem ao lado. O usuário poderá mover o cubo que está em destaque. Se ocorrer a colisão do jogador com o cubo preto o mesmo será destruído, caso o jogador colida com o cubo marrom será exibida uma mensagem Ganhou 10 pontos.