SlideShare uma empresa Scribd logo
1 de 27
Tópicos Especiais I:
Colisão
1º Semestre 2010 > PUCPR > Pós Jogos
Bruno C. de Paula
Resumo
 Vamos conhecer as funcionalidades de
colisão que o Unity 3D implementa;
 Também discutiremos diversos scripts que
lidam com a colisão;
 Por fim, vamos tratar da técnica de ray
casting;
 Lembre-se: o tratamento da colisão nem
sempre é necessário. Deixe a
responsabilidade para a física quando puder!
Exemplo Arkanoid.
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;
312/09/13
Problema do frame miss
 O que acontece quando a bala é rápida
demais?
412/09/13
Solução com ray casting
512/09/13
Tipos de colisores
 Cada um tem uma utilidade diferente;
 Component > Physics
612/09/13
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;
712/09/13
Static Collider X Rigidbody
 Static Collider é para objetos cuja física e
colisão é menos necessária;
 Rigidbody é para objetos com física;
812/09/13
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;
912/09/13
Script
Adicionando uma força a um objeto
AddForce – eixo mundo
1012/09/13
var vel = 10;
function FixedUpdate () {
var f : Vector3;
// X vai de -1 a 1
f.x = Input.GetAxis("Horizontal");
f.y = 0;
f.z = 0;
// Aplica uma velocidade
f = f * vel;
// Força é aplicada no eixo X
rigidbody.AddForce(f);
}
Script
Adicionando uma força a um objeto
AddRelativeForce – eixo local
1112/09/13
var vel = 10;
function FixedUpdate () {
var f : Vector3;
// X vai de -1 a 1
f.x = Input.GetAxis("Horizontal");
f.y = 0;
f.z = 0;
// Aplica uma velocidade
f = f * vel;
// Força é aplicada no eixo X
rigidbody.AddRelativeForce(f);
}
Character Controller
 Não é fisicamente realista (isto pode ser
bom!)
 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;
 O FPS Walker já aplica o Character
Controller.
1212/09/13
Script
Movimento a partir do teclado
1312/09/13
var vel = 10;
function Update () {
var f : Vector3;
f.x = Input.GetAxis("Horizontal");
f.y = 0;
f.z = Input.GetAxis("Vertical");
f = f * vel;
f = f * Time.deltaTime;
// GetComponent acessa um componente do objeto
var controller = GetComponent(CharacterController);
controller.Move(f);
}
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;
1412/09/13
Script
Obtém o objeto com o qual colidiu
function OnCollisionEnter(objetoColidido : Collision) {
print("Colidiu com: "+
objetoColidido.gameObject.name);
}
Script
Destrói tudo que toca
function OnControllerColliderHit(obj :
ControllerColliderHit) {
Destroy(obj.gameObject);
}
Script
Enviar uma mensagem
function OnControllerColliderHit(obj :
ControllerColliderHit) {
col.gameObject.SendMessage("Destruir");
}
 Para que a mensagem enviada seja tratada
pelo objeto colido, este deve possuir uma
função com o mesmo nome da mensagem;
Script
Modifica propriedades de um objeto diferente
 GameObject.Find procura um objeto a
partir de seu nome;
function OnControllerColliderHit(obj : ControllerColliderHit) {
// Encontra o GameObject com o nome indicado
txt = GameObject.Find("txt");
// Escreve o nome na tela
txt.guiText.text += obj.gameObject.name;
}
Script
Só modifica objeto marcado por tag
function OnControllerColliderHit(obj : ControllerColliderHit)
{
if(obj.gameObject.tag=="bloco")
{
// Encontra o GameObject com o nome indicado
txt = GameObject.Find("txt");
// Escreve o nome do obj na tela
txt.guiText.text=obj.gameObject.name;
}
}
 Cada objeto pode ser associado a uma
tag de identificação;
Triggers
Gatilhos
 Triggers são ignorados pelo engine de
física;
 Úteis para o disparo de eventos:
Cutscenes;
Abertura de portas;
Passagem de mensagem em tutoriais;
Itens de energia;
 Triggers agem como interruptores;
Eventos de trigger
 OnTriggerEnter: chamado
imediatamente quando o colisor entra no
trigger;
 OnTriggerStay: mensagem mandada ao
trigger e aos seus colisores enquanto
estiver colidindo;
 OnTriggerExit: chamado quando o colisor
sai do trigger.
Script
Transporta um objeto à frente após
passar pelo Trigger
function OnTriggerEnter(col : Collider)
{
//Move o objeto no eixo z (andar para frente)
col.transform.Translate(0, 0, 10);
}
Raycast
 Colisão preditiva;
 Útil em:
Projéteis rápidos;
Disparo de colisão e triggers quando o
personagem deve estar olhando
para o trigger;
 Função Physics.Raycast(posição, direção,
distância);
Script
Verifica se há objeto à frente
function Update () {
var hit : RaycastHit;
// Olha 10 metros à frente
if (Physics.Raycast (transform.position,
transform.forward, hit,10))
{
print ("Tem alguma coisa na minha frente");
// Desenha uma linha para representar o raio
Debug.DrawLine (transform.position, hit.point);
} else {
print("Sem nada no caminho");
}
Ignorando a colisão
 Necessário quando se cria tiros e
projéteis;
 Função Physics.IgnoreCollision;
Script
Criando projétil e ignorando a colisão
var projectile : Rigidbody;
var speed = 20;
function Update()
{
if( Input.GetButtonDown( "Fire1" ) )
{
var instantiatedProjectile : Rigidbody = Instantiate(
projectile, transform.position,
transform.rotation );
instantiatedProjectile.velocity =
transform.TransformDirection( Vector3( 0, 0, speed ) );
Physics.IgnoreCollision( instantiatedProjectile. collider,
transform.root.collider );
}
}
Para saber mais
 Capítulo do livro “Unit Game Development
Essentials”:
http://www.packtpub.
com/article/unity-game-development-interactio
 Fonte de algumas figuras desta
apresentação!
2712/09/13

Mais conteúdo relacionado

Destaque

Aula 2 causas das lesões
Aula 2   causas das lesõesAula 2   causas das lesões
Aula 2 causas das lesõesDaniela Lima
 
Primeiros socorros (PRS 71) - Hemorragia
Primeiros socorros (PRS 71) - HemorragiaPrimeiros socorros (PRS 71) - Hemorragia
Primeiros socorros (PRS 71) - HemorragiaLucas Damasceno
 
Avaliação Inicial tático
Avaliação Inicial táticoAvaliação Inicial tático
Avaliação Inicial táticosiatego
 
Noções básicas de cinemática
Noções básicas de cinemáticaNoções básicas de cinemática
Noções básicas de cinemáticaAngélica Brasil
 
Primeiros socorros
Primeiros socorrosPrimeiros socorros
Primeiros socorrosLucas Silva
 
Primeiros socorros Profª Enfª Tarcila Amorim
Primeiros socorros Profª Enfª Tarcila Amorim Primeiros socorros Profª Enfª Tarcila Amorim
Primeiros socorros Profª Enfª Tarcila Amorim Hitalo Vieira
 
Trauma, colisão e quedas
Trauma, colisão e quedasTrauma, colisão e quedas
Trauma, colisão e quedasbodywinner
 
Bombeiro civil primeiros socorros
Bombeiro civil primeiros socorrosBombeiro civil primeiros socorros
Bombeiro civil primeiros socorrosmarceloteacher
 
3ª aula atendimento inicial no trauma
3ª aula   atendimento inicial no trauma3ª aula   atendimento inicial no trauma
3ª aula atendimento inicial no traumaProf Silvio Rosa
 

Destaque (13)

Primeiros Socorros
Primeiros SocorrosPrimeiros Socorros
Primeiros Socorros
 
Aula 2 causas das lesões
Aula 2   causas das lesõesAula 2   causas das lesões
Aula 2 causas das lesões
 
Primeiros socorros (PRS 71) - Hemorragia
Primeiros socorros (PRS 71) - HemorragiaPrimeiros socorros (PRS 71) - Hemorragia
Primeiros socorros (PRS 71) - Hemorragia
 
Avaliação Inicial tático
Avaliação Inicial táticoAvaliação Inicial tático
Avaliação Inicial tático
 
Noções básicas de cinemática
Noções básicas de cinemáticaNoções básicas de cinemática
Noções básicas de cinemática
 
Primeiros socorros
Primeiros socorrosPrimeiros socorros
Primeiros socorros
 
Primeiros socorros Profª Enfª Tarcila Amorim
Primeiros socorros Profª Enfª Tarcila Amorim Primeiros socorros Profª Enfª Tarcila Amorim
Primeiros socorros Profª Enfª Tarcila Amorim
 
Hemorragia
HemorragiaHemorragia
Hemorragia
 
Trauma, colisão e quedas
Trauma, colisão e quedasTrauma, colisão e quedas
Trauma, colisão e quedas
 
Hemorragias
HemorragiasHemorragias
Hemorragias
 
Bombeiro civil primeiros socorros
Bombeiro civil primeiros socorrosBombeiro civil primeiros socorros
Bombeiro civil primeiros socorros
 
3ª aula atendimento inicial no trauma
3ª aula   atendimento inicial no trauma3ª aula   atendimento inicial no trauma
3ª aula atendimento inicial no trauma
 
Aula sobre Hemorragias
Aula sobre HemorragiasAula sobre Hemorragias
Aula sobre Hemorragias
 

Semelhante a 06 colisao final

Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - MackenzieIntrodução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenziejonathanblacknight
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-androidAlberto Souza
 
Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Odair Bonin Borges
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5Willian Molinari
 
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr JamDesenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr JamAndré Espeiorin
 

Semelhante a 06 colisao final (12)

Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - MackenzieIntrodução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
 
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island StudiosTutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-android
 
Aula disparos
Aula disparosAula disparos
Aula disparos
 
Aula disparos
Aula disparosAula disparos
Aula disparos
 
Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2
 
Desenvolvimento iOS
Desenvolvimento iOSDesenvolvimento iOS
Desenvolvimento iOS
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
 
Power mock
Power mockPower mock
Power mock
 
Batalhas com Robocode
Batalhas com RobocodeBatalhas com Robocode
Batalhas com Robocode
 
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr JamDesenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
 
Robocode
RobocodeRobocode
Robocode
 

Último

MARANATA - 19_04_2024.pptx | Maranata 2024
MARANATA - 19_04_2024.pptx | Maranata 2024MARANATA - 19_04_2024.pptx | Maranata 2024
MARANATA - 19_04_2024.pptx | Maranata 2024CarolTelles6
 
I.2 Meios de Proteção das culturass.pptx
I.2 Meios de Proteção das culturass.pptxI.2 Meios de Proteção das culturass.pptx
I.2 Meios de Proteção das culturass.pptxJudite Silva
 
GESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaa
GESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaaGESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaa
GESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaayasminlarissa371
 
I.1 Boas Práticas fitossanitarias.pptxCC
I.1 Boas Práticas fitossanitarias.pptxCCI.1 Boas Práticas fitossanitarias.pptxCC
I.1 Boas Práticas fitossanitarias.pptxCCJudite Silva
 
Simulado Enem Bernoulli-Primeiro dia.pdf
Simulado Enem Bernoulli-Primeiro dia.pdfSimulado Enem Bernoulli-Primeiro dia.pdf
Simulado Enem Bernoulli-Primeiro dia.pdfAnnaCarolina242437
 
Antonio Pereira_Vale+comunidade_set a dez_2023.pdf
Antonio Pereira_Vale+comunidade_set a dez_2023.pdfAntonio Pereira_Vale+comunidade_set a dez_2023.pdf
Antonio Pereira_Vale+comunidade_set a dez_2023.pdfAnnaCarolina242437
 
Simulado Bernoulli Enem_2-Primeiro dia.pdf
Simulado Bernoulli Enem_2-Primeiro dia.pdfSimulado Bernoulli Enem_2-Primeiro dia.pdf
Simulado Bernoulli Enem_2-Primeiro dia.pdfAnnaCarolina242437
 
AVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdf
AVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdfAVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdf
AVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdfAnnaCarolina242437
 
Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...
Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...
Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...AnnaCarolina242437
 

Último (9)

MARANATA - 19_04_2024.pptx | Maranata 2024
MARANATA - 19_04_2024.pptx | Maranata 2024MARANATA - 19_04_2024.pptx | Maranata 2024
MARANATA - 19_04_2024.pptx | Maranata 2024
 
I.2 Meios de Proteção das culturass.pptx
I.2 Meios de Proteção das culturass.pptxI.2 Meios de Proteção das culturass.pptx
I.2 Meios de Proteção das culturass.pptx
 
GESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaa
GESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaaGESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaa
GESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaa
 
I.1 Boas Práticas fitossanitarias.pptxCC
I.1 Boas Práticas fitossanitarias.pptxCCI.1 Boas Práticas fitossanitarias.pptxCC
I.1 Boas Práticas fitossanitarias.pptxCC
 
Simulado Enem Bernoulli-Primeiro dia.pdf
Simulado Enem Bernoulli-Primeiro dia.pdfSimulado Enem Bernoulli-Primeiro dia.pdf
Simulado Enem Bernoulli-Primeiro dia.pdf
 
Antonio Pereira_Vale+comunidade_set a dez_2023.pdf
Antonio Pereira_Vale+comunidade_set a dez_2023.pdfAntonio Pereira_Vale+comunidade_set a dez_2023.pdf
Antonio Pereira_Vale+comunidade_set a dez_2023.pdf
 
Simulado Bernoulli Enem_2-Primeiro dia.pdf
Simulado Bernoulli Enem_2-Primeiro dia.pdfSimulado Bernoulli Enem_2-Primeiro dia.pdf
Simulado Bernoulli Enem_2-Primeiro dia.pdf
 
AVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdf
AVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdfAVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdf
AVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdf
 
Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...
Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...
Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...
 

06 colisao final

  • 1. Tópicos Especiais I: Colisão 1º Semestre 2010 > PUCPR > Pós Jogos Bruno C. de Paula
  • 2. Resumo  Vamos conhecer as funcionalidades de colisão que o Unity 3D implementa;  Também discutiremos diversos scripts que lidam com a colisão;  Por fim, vamos tratar da técnica de ray casting;  Lembre-se: o tratamento da colisão nem sempre é necessário. Deixe a responsabilidade para a física quando puder! Exemplo Arkanoid.
  • 3. 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; 312/09/13
  • 4. Problema do frame miss  O que acontece quando a bala é rápida demais? 412/09/13
  • 5. Solução com ray casting 512/09/13
  • 6. Tipos de colisores  Cada um tem uma utilidade diferente;  Component > Physics 612/09/13
  • 7. 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; 712/09/13
  • 8. Static Collider X Rigidbody  Static Collider é para objetos cuja física e colisão é menos necessária;  Rigidbody é para objetos com física; 812/09/13
  • 9. 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; 912/09/13
  • 10. Script Adicionando uma força a um objeto AddForce – eixo mundo 1012/09/13 var vel = 10; function FixedUpdate () { var f : Vector3; // X vai de -1 a 1 f.x = Input.GetAxis("Horizontal"); f.y = 0; f.z = 0; // Aplica uma velocidade f = f * vel; // Força é aplicada no eixo X rigidbody.AddForce(f); }
  • 11. Script Adicionando uma força a um objeto AddRelativeForce – eixo local 1112/09/13 var vel = 10; function FixedUpdate () { var f : Vector3; // X vai de -1 a 1 f.x = Input.GetAxis("Horizontal"); f.y = 0; f.z = 0; // Aplica uma velocidade f = f * vel; // Força é aplicada no eixo X rigidbody.AddRelativeForce(f); }
  • 12. Character Controller  Não é fisicamente realista (isto pode ser bom!)  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;  O FPS Walker já aplica o Character Controller. 1212/09/13
  • 13. Script Movimento a partir do teclado 1312/09/13 var vel = 10; function Update () { var f : Vector3; f.x = Input.GetAxis("Horizontal"); f.y = 0; f.z = Input.GetAxis("Vertical"); f = f * vel; f = f * Time.deltaTime; // GetComponent acessa um componente do objeto var controller = GetComponent(CharacterController); controller.Move(f); }
  • 14. 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; 1412/09/13
  • 15. Script Obtém o objeto com o qual colidiu function OnCollisionEnter(objetoColidido : Collision) { print("Colidiu com: "+ objetoColidido.gameObject.name); }
  • 16. Script Destrói tudo que toca function OnControllerColliderHit(obj : ControllerColliderHit) { Destroy(obj.gameObject); }
  • 17. Script Enviar uma mensagem function OnControllerColliderHit(obj : ControllerColliderHit) { col.gameObject.SendMessage("Destruir"); }  Para que a mensagem enviada seja tratada pelo objeto colido, este deve possuir uma função com o mesmo nome da mensagem;
  • 18. Script Modifica propriedades de um objeto diferente  GameObject.Find procura um objeto a partir de seu nome; function OnControllerColliderHit(obj : ControllerColliderHit) { // Encontra o GameObject com o nome indicado txt = GameObject.Find("txt"); // Escreve o nome na tela txt.guiText.text += obj.gameObject.name; }
  • 19. Script Só modifica objeto marcado por tag function OnControllerColliderHit(obj : ControllerColliderHit) { if(obj.gameObject.tag=="bloco") { // Encontra o GameObject com o nome indicado txt = GameObject.Find("txt"); // Escreve o nome do obj na tela txt.guiText.text=obj.gameObject.name; } }  Cada objeto pode ser associado a uma tag de identificação;
  • 20. Triggers Gatilhos  Triggers são ignorados pelo engine de física;  Úteis para o disparo de eventos: Cutscenes; Abertura de portas; Passagem de mensagem em tutoriais; Itens de energia;  Triggers agem como interruptores;
  • 21. Eventos de trigger  OnTriggerEnter: chamado imediatamente quando o colisor entra no trigger;  OnTriggerStay: mensagem mandada ao trigger e aos seus colisores enquanto estiver colidindo;  OnTriggerExit: chamado quando o colisor sai do trigger.
  • 22. Script Transporta um objeto à frente após passar pelo Trigger function OnTriggerEnter(col : Collider) { //Move o objeto no eixo z (andar para frente) col.transform.Translate(0, 0, 10); }
  • 23. Raycast  Colisão preditiva;  Útil em: Projéteis rápidos; Disparo de colisão e triggers quando o personagem deve estar olhando para o trigger;  Função Physics.Raycast(posição, direção, distância);
  • 24. Script Verifica se há objeto à frente function Update () { var hit : RaycastHit; // Olha 10 metros à frente if (Physics.Raycast (transform.position, transform.forward, hit,10)) { print ("Tem alguma coisa na minha frente"); // Desenha uma linha para representar o raio Debug.DrawLine (transform.position, hit.point); } else { print("Sem nada no caminho"); }
  • 25. Ignorando a colisão  Necessário quando se cria tiros e projéteis;  Função Physics.IgnoreCollision;
  • 26. Script Criando projétil e ignorando a colisão var projectile : Rigidbody; var speed = 20; function Update() { if( Input.GetButtonDown( "Fire1" ) ) { var instantiatedProjectile : Rigidbody = Instantiate( projectile, transform.position, transform.rotation ); instantiatedProjectile.velocity = transform.TransformDirection( Vector3( 0, 0, speed ) ); Physics.IgnoreCollision( instantiatedProjectile. collider, transform.root.collider ); } }
  • 27. Para saber mais  Capítulo do livro “Unit Game Development Essentials”: http://www.packtpub. com/article/unity-game-development-interactio  Fonte de algumas figuras desta apresentação! 2712/09/13

Notas do Editor

  1. Fonte da figura: Unity Game Development Essentials http://www.packtpub.com/article/unity-game-development-interactions-part1 12/09/13
  2. Fonte da figura: Unity Game Development Essentials http://www.packtpub.com/article/unity-game-development-interactions-part1 12/09/13