SlideShare ist ein Scribd-Unternehmen logo
1 von 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); 
}

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Mehr von 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
 

Kürzlich hochgeladen

atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
Autonoma
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
LidianeLill2
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 

Kürzlich hochgeladen (20)

O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxSlides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidade
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 

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); }