Projetos RAD : Unity 3D 
Colisões Parte 1 
Augusto Bülow
Unity 
• Colisões = essencial em games 
– Comportamento de acordo com a cena 
• Colisão chão, paredes 
– Comportamento com...
Unity 
• Objetos com colisão: 
– Componente Collider 
– Adicionado por default 
• Diferentes tipos de Collider 
– Mais ade...
Unity 
• Collider: Box 
– Colisão básica, boa 
performance 
– Aceita dimensões 
diferentes em X,Y,Z 
– Utilização geral: 
...
Unity 
• Collider: Sphere 
– Colisão básica, maior 
performance 
– Dimensão única: Raio 
– Utilização geral: 
• Objetos es...
Unity 
• Collider: Capsule 
– Cilindro com meia 
esfera em cada ponta 
– Maior processamento 
– Duas Dimensões: 
• Altura ...
Unity 
• Collider: Mesh 
– Reproduz a malha real do 
objeto 
– Ultra processamento 
– Restrições 
• Meshs com 255 faces 
m...
Unity 
• Collider: Wheel 
– Roda: especial para 
veículos com física 
– Parâmetros para 
funcionamento como 
motor (físico...
Unity 
• Collider: Raycast 
– Raio simples para 
determinar altura 
– Uso específico para 
alguns veículos / objs 
– Dispa...
Unity 
• Colisões em geral usando primitivas 
– Box, Sphere, Capsule 
• Colisão Mesh : 
– apenas em situações específicas ...
Unity 
• Possível criar Collider composto 
– Criar objetos com hierarquia 
– Criar Collider com primitivas para cada parte...
Unity 
• Collider = forma para colisão 
• Todos objetos que se deseja perceber a colisão precisam 
ter um Collider atachad...
Unity 
• RigidBody – ativa física para um objeto 
– Controle do objeto passa a ser gerido pela engine 
física 
– Reage aut...
Unity 
• RigidBody Test: 
– Criar cena com pilar 
básico (StaticCollider) e 
cubos com componente 
RigidBox (físicos) 
• A...
Unity 
• Player (Físico) códigos específicos 
• Interações com física: 
function FixedUpdate() 
• Funções força para Rigid...
Unity 
• Código básico teste AddForce 
var velocidade = 15; 
var forca : Vector3; 
function FixedUpdate () { 
//CAPTURA IN...
Unity 
• AddForce = sem muita precisão (direta) 
• Comportamento físico realístico faz rotar com 
colisões automaticamente...
Unity 
• AddRelativeForce(x,y,z) 
– Forças adicionadas em relação aos ângulos atuais 
do objeto (sua orientação) 
– Funcio...
Unity 
• MovePosition(x,y,z) 
– Move objeto físico para nova posição (tenta mover) 
– Posição mundial: 
= utilizar posição...
Unity 
• Exemplo MovePosition 
function FixedUpdate () { 
forca.x = Input.GetAxis("Horizontal"); 
forca.y = 0; 
forca.z = ...
Unity 
• Transformar vetor de forças em relação a uma 
orientação / ângulo 
• Função específica da classe Transform 
trans...
Próximos SlideShares
Carregando em…5
×

Aula5 colisao1

726 visualizações

Publicada em

Trabalho com colisões no unity3D

Publicada em: Educação
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
726
No SlideShare
0
A partir de incorporações
0
Número de incorporações
345
Ações
Compartilhamentos
0
Downloads
16
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aula5 colisao1

  1. 1. Projetos RAD : Unity 3D Colisões Parte 1 Augusto Bülow
  2. 2. Unity • Colisões = essencial em games – Comportamento de acordo com a cena • Colisão chão, paredes – Comportamento com outros objetos • Colisão com outros objetos – Identificar área atual – Tiros, bônus, etc.
  3. 3. Unity • Objetos com colisão: – Componente Collider – Adicionado por default • Diferentes tipos de Collider – Mais adequado a forma – Maior / menor performance • Adicionável por: – Component->Physics
  4. 4. Unity • Collider: Box – Colisão básica, boa performance – Aceita dimensões diferentes em X,Y,Z – Utilização geral: • Paredes, caixas, objetos, personagens, etc.
  5. 5. Unity • Collider: Sphere – Colisão básica, maior performance – Dimensão única: Raio – Utilização geral: • Objetos esféricos, personagens, etc.
  6. 6. Unity • Collider: Capsule – Cilindro com meia esfera em cada ponta – Maior processamento – Duas Dimensões: • Altura e Raio – Configuração adicional: orientação – Utilização geral: • Personagens e objetos
  7. 7. Unity • Collider: Mesh – Reproduz a malha real do objeto – Ultra processamento – Restrições • Meshs com 255 faces máximo • Mesh collider não colide com outro mesh collider* – Uso quando necessário – Geral outros colliders são mais adequados
  8. 8. Unity • Collider: Wheel – Roda: especial para veículos com física – Parâmetros para funcionamento como motor (físico) – Distancia básica por raio – Uso exclusivo: veículos com física
  9. 9. Unity • Collider: Raycast – Raio simples para determinar altura – Uso específico para alguns veículos / objs – Dispara um raio do centro para baixo – Checa colisões: • altura solo basicamente
  10. 10. Unity • Colisões em geral usando primitivas – Box, Sphere, Capsule • Colisão Mesh : – apenas em situações específicas • Wheel / Raycast – Veículos com funcionamento físico
  11. 11. Unity • Possível criar Collider composto – Criar objetos com hierarquia – Criar Collider com primitivas para cada parte (child) • Funciona como Collider único (ligados por hierarquia) • Simulação de Mesh e objetos complexos
  12. 12. Unity • Collider = forma para colisão • Todos objetos que se deseja perceber a colisão precisam ter um Collider atachado • Objetos apenas com collider = Static Collider – Estáticos, não se espera grandes movimentos – Não se detectam grandes colisões em geral • Componentes adicionais para colisões mais completas – Simulação física = RigidBody – Personagens = Character Controlle
  13. 13. Unity • RigidBody – ativa física para um objeto – Controle do objeto passa a ser gerido pela engine física – Reage automaticamente com outros objetos – Possui massa específica (peso) – Possui fricção, elasticidade (Physics Material) – Funcionamento autônomo – baseado em colisões – Possível mover por propriedades transform: • Quebra do realismo físico (possível) – Movimento com forças físicas • Comandos específicos
  14. 14. Unity • RigidBody Test: – Criar cena com pilar básico (StaticCollider) e cubos com componente RigidBox (físicos) • Adicionando RigidBody – Component->Physics-> • RigidBody
  15. 15. Unity • Player (Físico) códigos específicos • Interações com física: function FixedUpdate() • Funções força para RigidBody – AddForce(x,y,z) • Adiciona forças ao corpo, baseadas nas coordenadas mundiais – AddRelativeForce(x,y,z) • Adiciona forças ao corpo, baseadas nas coordenadas atuais do objeto (suas rotações)
  16. 16. Unity • Código básico teste AddForce var velocidade = 15; var forca : Vector3; function FixedUpdate () { //CAPTURA INPUT BASICO forca.x = Input.GetAxis("Horizontal"); forca.y = 0; forca.z = Input.GetAxis("Vertical"); //Multiplicamos vetor pela velocidade desejada forca *= velocidade; rigidbody.AddForce(forca); }
  17. 17. Unity • AddForce = sem muita precisão (direta) • Comportamento físico realístico faz rotar com colisões automaticamente • Uso para forças realísticas sobre objetos físicos: – jogar um objeto em alguma direção • Resultado: depende das colisões encontradas • AddForce: – forças em relação aos eixos mundiais
  18. 18. Unity • AddRelativeForce(x,y,z) – Forças adicionadas em relação aos ângulos atuais do objeto (sua orientação) – Funcionamento semelhante (física realística) – Resultado completamente diferente • Teste: substituir código: //rigidbody.AddForce(forca); rigidbody.AddRelativeForce(forca);
  19. 19. Unity • MovePosition(x,y,z) – Move objeto físico para nova posição (tenta mover) – Posição mundial: = utilizar posição atual + movimento desejado - Neste caso utilizar deltaTime para movimento compatível / escalado pelo tempo - Multiplicar movimento por Time.deltaTime - AddForce = não se usa deltaTime - Já incorporado pela engine física
  20. 20. Unity • Exemplo MovePosition function FixedUpdate () { forca.x = Input.GetAxis("Horizontal"); forca.y = 0; forca.z = Input.GetAxis("Vertical"); forca *= velocidade; forca *= Time.deltaTime; forca += rigidbody.position; rigidbody.MovePosition(forca); }
  21. 21. Unity • Transformar vetor de forças em relação a uma orientação / ângulo • Função específica da classe Transform transform.TransformDirection(x,y,z) • Converte vetor de forças X,Y,Z para equivalente em relação a orientação do objeto • Adicionar ao código a linha: forca = transform.TransformDirection(forca);

×