SlideShare uma empresa Scribd logo
1 de 18
Projeto de jogos RAD: 
Disparos, tiros e balas 
Augusto Bülow
Unity3D 
• Tiros: analogia ao mundo real 
• Objeto disparado com direção e velocidade 
• Jogo : mesma forma 
• Objeto próprio = bala 
• Velocidade(s) iniciais 
• Percebe / Trata colisões : códigos 
• Efeitos: inicial, rastro, explosão 
• Prefab: re-utilização balas
Unity3D 
• Prototipar objeto – criação normal 
• Quando completo = cria-se PREFAB 
• Criar Objeto Bala (esfera) 
• Precisa de Collider (RigidBody*) 
• Balas alta velocidade = desligar gravidade 
• RigidBody / UseGravity = 0 
• Criar Script controle básico da bala
Unity3D 
• Script Básico: 
• Disparar sons 
• Inicializar tiro (velocidades) 
• Ativar efeitos 
• Perceber colisões -> Criar efeito 
• Perceber colisões -> Remover 
• Remover distância * (finalizar sempre objetos)
Unity3D 
var vetor_forca : Vector3; 
var velo_tiro = 300; 
//inicializar 
function Start () { 
Start = inicializa velo bala 
//DEBUG = MOSTRA DISPARO 
debug = gameObject.Find("Debug2"); 
debug.guiText.text = "BALA DISPARADA"; 
//forca inicial 
vetor_forca.x = 0; 
vetor_forca.y = 0; 
vetor_forca.z = velo_tiro; 
//converte forca para direcao 
vetor_forca = transform.TransformDirection(vetor_forca); 
//adiciona forca inicial da bala ( convertida para sua direcao) 
rigidbody.AddForce(vetor_forca); 
}
Unity3D 
• Update = usando Física = FixedUpdate() 
• Cuidar da remoção da bala * 
• Por tempo 
• Por distância 
//fisica = fixed update 
function FixedUpdate () { 
//distancia em relação ao player – localizar player 
player = GameObject.Find("Player"); 
var distancia = Vector3.Distance(transform.position,player.transform.position); 
if (distancia > 100) { 
Destroy(gameObject); 
} 
}
Unity3D 
• Perceber / Controlar Colisão da Bala 
• RigidBody = OnCollisionEnter 
// Perceber tratar colisoes 
function OnCollisionEnter(quem : Collision) { 
//DEBUG = MOSTRA COLSIAO / DEL 
debug = gameObject.Find("Debug2"); 
debug.guiText.text = "BALA COLIDIU"; 
//auto destroi na colisao 
Destroy(gameObject); 
}
Unity3D 
• Disparo Balas : código em quem vai disparar 
• Re-utilização objeto bala = Instantiate / Prefab 
• Transformar nossa bala em Prefab 
• Criar novo prefab -> Inserir objeto bala no prefab 
• Instantiate -> utiliza Prefab 
// Tecla ativa tiro 
if (Input.GetButton("Fire1") { 
Atira(); 
} 
• Controlando disparo com função
Unity3D 
• Função disparo / Atira 
//Variavel ponteiro para bala (prefab) 
var bala : Transform; 
function Atira() { 
//CRIA BALA POSICAO E ROTACAO DE QUEM DISPARA 
Instantiate(bala, transform.position, transform.rotation); 
}
Unity3D 
• Possíveis problemas neste ponto 
• Tiros sem delay: 
• Muitas balas criadas (1 por ciclo) = auto colisão entre balas 
• Colisão com objeto “emissor” 
• Tiro disparado da posição do player = auto colisão com o player 
• Inicializado dentro da área de colisão de “quem dispara”
Unity3D 
• Temporizar tiros: delay mínimo entre-tiros (normal armas) 
var timer_tiro = 0.0; 
var delay_tiro = 0.5; 
.... 
//ZERA TIMER ENTRE TIROS 
if (timer_tiro > 0) { 
timer_tiro -= Time.deltaTime; 
} 
//DISPARA TECLA + TIMER OK 
if (Input.GetButton("Fire1") && timer_tiro <= 0) { 
timer_tiro = delay_tiro; 
Atira(); 
}
Unity3D 
• Posição inicial bala = fora da colisão do emissor 
• Calcular Posição relativa = a frente (fora collider) 
var posicao_bala : Vector3; 
var dist_tiro = 1.5; 
var altura_tiro = 0.9; 
function Atira() { 
//calculando posicao relativa - a frente - evita colisao player 
var angulo = transform.eulerAngles.y * Mathf.Deg2Rad; 
posicao_bala.x = transform.position.x + dist_tiro * Mathf.Sin(angulo); 
posicao_bala.y = transform.position.y + altura_tiro; 
posicao_bala.z = transform.position.z + dist_tiro * Mathf.Cos(angulo); 
//CRIA TIRO POSICAO LIVRE 
Instantiate(bala, posicao_bala, transform.rotation); 
}
Unity3D 
• Criando efeito para explosão da bala 
• Criar um objeto : controlar a explosão 
• Transformar em Prefab pós pronto (re-uso) 
• Criar objeto vazio 
• Adicionar / Criar efeito explosão (partículas) 
• Adicionar Particle Emitter + Particle Renderer + Particle Animator 
• Setar Renderer -> Material -> Fire Add 
• Setar Emissor: OneShot 
• Setar Animator: AutoDestruct 
• Roda uma vez e Auto-remove objeto Explosão
Unity3D 
• Acionar explosão no momento da batida : bala 
• Instanciar objeto explosão (Prefab) 
• Codigo bala: 
var explode = 0; 
var explosao_obj : Transform; 
..... 
//cria explosao e destroi – centralizo cod. no update 
if (explode == 1) { 
Instantiate(explosao_obj, transform.position, transform.rotation); 
Destroy(gameObject); 
}
Unity3D 
• Sons acionados por eventos 
• Facilidade: Sons vinculados aos objetos 
– - Inserir AudioSource 
– - Autoplay : play on awake 
• - criaçao da bala: som disparo 
• - criaçao da explosão: som 
• Inserir sons exemplo: arma01.wav, explo01.wav
Unity3D 
• Inimigos IA = mesmo esquema de tiro 
• Pode-se aproveitar codigo 
• Diferença: IA auto-ativa tiros, não teclas 
– - Criar estados especifico para atirar IA* 
– - Observar timer 
– - Observar posiçao 
• - não colidir ao iniciar
Unity3D 
• Atirador IA simples 
var timer_atira = 0.0; 
var entre_tiros =1; 
function Update () { 
player = GameObject.Find("Player"); 
transform.LookAt(player.transform.position); 
timer_atira -= Time.deltaTime; 
if (timer_atira <= 0) { 
timer_atira = entre_tiros; 
Atira(); 
}
Unity3D 
• Função atira = mesma 
var bala : Transform; 
var posicao_bala : Vector3; 
var dist_tiro = 1.5; 
var altura_tiro = 0.6; 
function Atira() { 
//calculando posicao relativa - a frente - evita colisao player 
var angulo = transform.eulerAngles.y * Mathf.Deg2Rad; 
posicao_bala.x = transform.position.x + dist_tiro * Mathf.Sin(angulo); 
posicao_bala.y = transform.position.y + altura_tiro; 
posicao_bala.z = transform.position.z + dist_tiro * Mathf.Cos(angulo); 
//CRIA TIRO POSICAO LIVRE 
Instantiate(bala, posicao_bala, transform.rotation); 
}

Mais conteúdo relacionado

Semelhante a Aula disparos

Semelhante a Aula disparos (7)

Aula cameras
Aula camerasAula cameras
Aula cameras
 
Aula anima-modelos
Aula anima-modelosAula anima-modelos
Aula anima-modelos
 
Aula ia
Aula iaAula ia
Aula ia
 
06 colisao final
06 colisao final06 colisao final
06 colisao final
 
Aula8 instancias
Aula8 instanciasAula8 instancias
Aula8 instancias
 
Aula1 intro
Aula1  introAula1  intro
Aula1 intro
 
Aula anima1
Aula anima1Aula anima1
Aula anima1
 

Mais de Marcos Batista (17)

Aula terrain
Aula terrainAula terrain
Aula terrain
 
Aula som
Aula somAula som
Aula som
 
Aula sky
Aula skyAula sky
Aula sky
 
Aula particulas
Aula particulasAula particulas
Aula particulas
 
Aula modelos
Aula modelosAula modelos
Aula modelos
 
Aula menus
Aula menusAula menus
Aula menus
 
Aula maps
Aula mapsAula maps
Aula maps
 
Aula ia2
Aula ia2Aula ia2
Aula ia2
 
Aula gui
Aula guiAula gui
Aula gui
 
Aula disparos
Aula disparosAula disparos
Aula disparos
 
Aula9 material
Aula9 materialAula9 material
Aula9 material
 
Aula7 velocidade
Aula7 velocidadeAula7 velocidade
Aula7 velocidade
 
Aula6 colisao2
Aula6 colisao2Aula6 colisao2
Aula6 colisao2
 
Aula5 colisao1
Aula5 colisao1Aula5 colisao1
Aula5 colisao1
 
Aula4 debug
Aula4   debugAula4   debug
Aula4 debug
 
Aula3 input
Aula3   inputAula3   input
Aula3 input
 
Aula2 intro2
Aula2   intro2Aula2   intro2
Aula2 intro2
 

Último

PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAHELENO FAVACHO
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSOLeloIurk1
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfHELENO FAVACHO
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxedelon1
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfHELENO FAVACHO
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 

Último (20)

PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 

Aula disparos

  • 1. Projeto de jogos RAD: Disparos, tiros e balas Augusto Bülow
  • 2. Unity3D • Tiros: analogia ao mundo real • Objeto disparado com direção e velocidade • Jogo : mesma forma • Objeto próprio = bala • Velocidade(s) iniciais • Percebe / Trata colisões : códigos • Efeitos: inicial, rastro, explosão • Prefab: re-utilização balas
  • 3. Unity3D • Prototipar objeto – criação normal • Quando completo = cria-se PREFAB • Criar Objeto Bala (esfera) • Precisa de Collider (RigidBody*) • Balas alta velocidade = desligar gravidade • RigidBody / UseGravity = 0 • Criar Script controle básico da bala
  • 4. Unity3D • Script Básico: • Disparar sons • Inicializar tiro (velocidades) • Ativar efeitos • Perceber colisões -> Criar efeito • Perceber colisões -> Remover • Remover distância * (finalizar sempre objetos)
  • 5. Unity3D var vetor_forca : Vector3; var velo_tiro = 300; //inicializar function Start () { Start = inicializa velo bala //DEBUG = MOSTRA DISPARO debug = gameObject.Find("Debug2"); debug.guiText.text = "BALA DISPARADA"; //forca inicial vetor_forca.x = 0; vetor_forca.y = 0; vetor_forca.z = velo_tiro; //converte forca para direcao vetor_forca = transform.TransformDirection(vetor_forca); //adiciona forca inicial da bala ( convertida para sua direcao) rigidbody.AddForce(vetor_forca); }
  • 6. Unity3D • Update = usando Física = FixedUpdate() • Cuidar da remoção da bala * • Por tempo • Por distância //fisica = fixed update function FixedUpdate () { //distancia em relação ao player – localizar player player = GameObject.Find("Player"); var distancia = Vector3.Distance(transform.position,player.transform.position); if (distancia > 100) { Destroy(gameObject); } }
  • 7. Unity3D • Perceber / Controlar Colisão da Bala • RigidBody = OnCollisionEnter // Perceber tratar colisoes function OnCollisionEnter(quem : Collision) { //DEBUG = MOSTRA COLSIAO / DEL debug = gameObject.Find("Debug2"); debug.guiText.text = "BALA COLIDIU"; //auto destroi na colisao Destroy(gameObject); }
  • 8. Unity3D • Disparo Balas : código em quem vai disparar • Re-utilização objeto bala = Instantiate / Prefab • Transformar nossa bala em Prefab • Criar novo prefab -> Inserir objeto bala no prefab • Instantiate -> utiliza Prefab // Tecla ativa tiro if (Input.GetButton("Fire1") { Atira(); } • Controlando disparo com função
  • 9. Unity3D • Função disparo / Atira //Variavel ponteiro para bala (prefab) var bala : Transform; function Atira() { //CRIA BALA POSICAO E ROTACAO DE QUEM DISPARA Instantiate(bala, transform.position, transform.rotation); }
  • 10. Unity3D • Possíveis problemas neste ponto • Tiros sem delay: • Muitas balas criadas (1 por ciclo) = auto colisão entre balas • Colisão com objeto “emissor” • Tiro disparado da posição do player = auto colisão com o player • Inicializado dentro da área de colisão de “quem dispara”
  • 11. Unity3D • Temporizar tiros: delay mínimo entre-tiros (normal armas) var timer_tiro = 0.0; var delay_tiro = 0.5; .... //ZERA TIMER ENTRE TIROS if (timer_tiro > 0) { timer_tiro -= Time.deltaTime; } //DISPARA TECLA + TIMER OK if (Input.GetButton("Fire1") && timer_tiro <= 0) { timer_tiro = delay_tiro; Atira(); }
  • 12. Unity3D • Posição inicial bala = fora da colisão do emissor • Calcular Posição relativa = a frente (fora collider) var posicao_bala : Vector3; var dist_tiro = 1.5; var altura_tiro = 0.9; function Atira() { //calculando posicao relativa - a frente - evita colisao player var angulo = transform.eulerAngles.y * Mathf.Deg2Rad; posicao_bala.x = transform.position.x + dist_tiro * Mathf.Sin(angulo); posicao_bala.y = transform.position.y + altura_tiro; posicao_bala.z = transform.position.z + dist_tiro * Mathf.Cos(angulo); //CRIA TIRO POSICAO LIVRE Instantiate(bala, posicao_bala, transform.rotation); }
  • 13. Unity3D • Criando efeito para explosão da bala • Criar um objeto : controlar a explosão • Transformar em Prefab pós pronto (re-uso) • Criar objeto vazio • Adicionar / Criar efeito explosão (partículas) • Adicionar Particle Emitter + Particle Renderer + Particle Animator • Setar Renderer -> Material -> Fire Add • Setar Emissor: OneShot • Setar Animator: AutoDestruct • Roda uma vez e Auto-remove objeto Explosão
  • 14. Unity3D • Acionar explosão no momento da batida : bala • Instanciar objeto explosão (Prefab) • Codigo bala: var explode = 0; var explosao_obj : Transform; ..... //cria explosao e destroi – centralizo cod. no update if (explode == 1) { Instantiate(explosao_obj, transform.position, transform.rotation); Destroy(gameObject); }
  • 15. Unity3D • Sons acionados por eventos • Facilidade: Sons vinculados aos objetos – - Inserir AudioSource – - Autoplay : play on awake • - criaçao da bala: som disparo • - criaçao da explosão: som • Inserir sons exemplo: arma01.wav, explo01.wav
  • 16. Unity3D • Inimigos IA = mesmo esquema de tiro • Pode-se aproveitar codigo • Diferença: IA auto-ativa tiros, não teclas – - Criar estados especifico para atirar IA* – - Observar timer – - Observar posiçao • - não colidir ao iniciar
  • 17. Unity3D • Atirador IA simples var timer_atira = 0.0; var entre_tiros =1; function Update () { player = GameObject.Find("Player"); transform.LookAt(player.transform.position); timer_atira -= Time.deltaTime; if (timer_atira <= 0) { timer_atira = entre_tiros; Atira(); }
  • 18. Unity3D • Função atira = mesma var bala : Transform; var posicao_bala : Vector3; var dist_tiro = 1.5; var altura_tiro = 0.6; function Atira() { //calculando posicao relativa - a frente - evita colisao player var angulo = transform.eulerAngles.y * Mathf.Deg2Rad; posicao_bala.x = transform.position.x + dist_tiro * Mathf.Sin(angulo); posicao_bala.y = transform.position.y + altura_tiro; posicao_bala.z = transform.position.z + dist_tiro * Mathf.Cos(angulo); //CRIA TIRO POSICAO LIVRE Instantiate(bala, posicao_bala, transform.rotation); }