Projetos RAD : Unity 3D 
Colisões Parte 2 
Character Controller e Triggers 
Augusto Bülow
Unity 
• Colisões Objetos 
– Collider : formato da colisão 
• Estáticos (static collider) 
– Dinâmicos : componentes adici...
Unity 
• Character Controller 
– Personagens em geral controlados por animações e 
ações, sem necessariamente um comportam...
Unity 
• Character Controller 
– Adiciona-se por: 
• Component->Physics->Character Controller 
– Sobrepõe o Collider anter...
Unity 
• Character Controller 
– Altura 
– Raio 
– Slope Limit 
• Limite para subida em 
rampas (graus) 
– Step Offset 
• ...
Unity 
• Acessar o componente Character Controller 
não pode ser diretamente 
• Precisa localizar o componente com: 
var p...
Unity 
• Character Controller : função Move 
• Código básico para movimento: 
var velocidade = 15; 
var forca : Vector3; 
...
Unity 
• Não usa gravidade direta 
• Tem Flags auxiliares 
– Setadas com o movimento 
– isGrounded = no chão 
– CollisionF...
Unity 
• Criando gravidade manualmente 
– Basicamente aplicar força y (gravidade) 
var gravidade = 20; 
Function Update() ...
Unity 
• Criando pulo básico – força y (por tecla) 
– Basicamente aplicar força y (pulo) 
– Gravidade devolve ela a zero (...
Unity 
• Tratando colisões manualmente 
– Colisões disparam mensagens para os objetos 
envolvidos 
– Colisões em geral (Co...
Unity 
• Character Controller : Colisão básica 
• Recebe um ControllerColliderHit 
– Possível acessar propriedades do obje...
Unity 
• RigidBody e Colliders normais 
• Recebe um Collider 
– Possível acessar propriedades do objeto colidido 
• Mensag...
Unity 
• Trigger = Gatilhos 
• Colisões especiais – objetos de marcação 
– Não esperada colisão com reação diretamente 
– ...
Unity 
• Trigger : Exemplo Colisão 
function OnTriggerEnter (quem : Collider ) { 
debug = GameObject.Find("Debug1"); 
debu...
Próximos SlideShares
Carregando em…5
×

Aula6 colisao2

651 visualizações

Publicada em

Trabalho com colisões no unity3D

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

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

Nenhuma nota no slide

Aula6 colisao2

  1. 1. Projetos RAD : Unity 3D Colisões Parte 2 Character Controller e Triggers Augusto Bülow
  2. 2. Unity • Colisões Objetos – Collider : formato da colisão • Estáticos (static collider) – Dinâmicos : componentes adicionais • RigidBody : – movimento e comportamento físico (realístico) • Character Controller : – Componnte especial para players – Detecção de colisões geral – Controle mais direto (física = simulação automática)
  3. 3. Unity • Character Controller – Personagens em geral controlados por animações e ações, sem necessariamente um comportamento realístico (total) • Utiliza-se Character Controller • Maior controle geral (estável em colisões) • Transformações baseadas principalmente em script – Quando personagem planejado para ter física real: • Utiliza-se RigidBody • Comportamento imprevisível (realístico) • Transformações automáticas baseadas em colisões
  4. 4. Unity • Character Controller – Adiciona-se por: • Component->Physics->Character Controller – Sobrepõe o Collider anterior do objeto – Pode ser utilizado com RigidBody, mas sua utilização é alternativa (à física realística) – Character controller: • comandos específicos para controle / movimento
  5. 5. Unity • Character Controller – Altura – Raio – Slope Limit • Limite para subida em rampas (graus) – Step Offset • Altura subida degraus – Skin Width • Valores maiores para evitar colisões próximas (grudar = stuck)
  6. 6. Unity • Acessar o componente Character Controller não pode ser diretamente • Precisa localizar o componente com: var ponteiro = GetComponent(CharacterControler) • GetComponent pode ser usado para acessar qualquer componente do Objeto • Chamar pelo nome, sem espaços, sem aspas
  7. 7. Unity • Character Controller : função Move • Código básico para movimento: var velocidade = 15; var forca : Vector3; function Update () { //CAPTURA INPUT BASICO forca.x = Input.GetAxis("Horizontal"); forca.y = 0; forca.z = Input.GetAxis("Vertical"); forca *= velocidade; forca *= Time.deltaTime; var controller = GetComponent(CharacterController); controller.Move(forca); }
  8. 8. Unity • Não usa gravidade direta • Tem Flags auxiliares – Setadas com o movimento – isGrounded = no chão – CollisionFlags = detalhes da colisão • None • Sides • Above • Below
  9. 9. Unity • Criando gravidade manualmente – Basicamente aplicar força y (gravidade) var gravidade = 20; Function Update() { //CAPTURA INPUT BASICO forca.x = Input.GetAxis("Horizontal"); //forca.y = 0; forca.z = Input.GetAxis("Vertical"); forca *= velocidade; //APLICANDO GRAVIDADE SEMPRE forca.y -= gravidade; forca *= Time.deltaTime; ....
  10. 10. Unity • Criando pulo básico – força y (por tecla) – Basicamente aplicar força y (pulo) – Gravidade devolve ela a zero (ao solo) – Adicionalmente – só pular se no chão (isGrounded) var forca_pulo = 20; var no_chao = 0; .... (antes do controller.Move) if (Input.GetKeyDown("space") && no_chao == 1) { forca.y = forca_pulo; } ... (FLAG atualizada após o Move) if (controller.isGrounded) { no_chao = 1; }
  11. 11. Unity • Tratando colisões manualmente – Colisões disparam mensagens para os objetos envolvidos – Colisões em geral (Colliders): • OnCollisionEnter • OnCollisionStay • OnCollisionExit – Colisões Character Controller : ESPECIAL • OnControllerColliderHit • Objeto que colidiu também é passado na mensagem (ponteiro)
  12. 12. Unity • Character Controller : Colisão básica • Recebe um ControllerColliderHit – Possível acessar propriedades do objeto colidido • Mensagem OnControllerColliderHit • Exemplo: – retornar o nome do objeto colidido em um Guitext function OnControllerColliderHit (quem : ControllerColliderHit ) { debug = GameObject.Find("Debug1"); debug.guiText.text = "Colisao: "; debug.guiText.text += quem.gameObject.name; }
  13. 13. Unity • RigidBody e Colliders normais • Recebe um Collider – Possível acessar propriedades do objeto colidido • Mensagens OnCollisionEnter • Observar: – Character Controller uso diferenciado function OnCollisionEnter (quem : Collider ) { debug = GameObject.Find("Debug1"); debug.guiText.text = "Colisao: "; debug.guiText.text += quem.gameObject.name; }
  14. 14. Unity • Trigger = Gatilhos • Colisões especiais – objetos de marcação – Não esperada colisão com reação diretamente – Colisão para ativação ou informação – Objeto basicamente passável (mas detecta a colisão) – Uso: • Bônus e itens • indicar entrada em parte do cenário, etc – Mensagens Específicas • OnTriggerEnter • OnTriggerStay • OnTriggerExit
  15. 15. Unity • Trigger : Exemplo Colisão function OnTriggerEnter (quem : Collider ) { debug = GameObject.Find("Debug1"); debug.guiText.text = "Colisao TRIGGER: "; debug.guiText.text += quem.gameObject.name; //Remove item que colidiu Destroy(quem.gameObject); }

×