SlideShare une entreprise Scribd logo
1  sur  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); 
}

Contenu connexe

Similaire à 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
 

Plus 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
 

Dernier

O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
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
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
rfmbrandao
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 

Dernier (20)

O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
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
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
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
 
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çã...
 
Slides Lição 7, CPAD, O Perigo Da Murmuração, 2Tr24.pptx
Slides Lição 7, CPAD, O Perigo Da Murmuração, 2Tr24.pptxSlides Lição 7, CPAD, O Perigo Da Murmuração, 2Tr24.pptx
Slides Lição 7, CPAD, O Perigo Da Murmuração, 2Tr24.pptx
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
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.
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
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
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Modelos de Inteligencia Emocional segundo diversos autores
Modelos de Inteligencia Emocional segundo diversos autoresModelos de Inteligencia Emocional segundo diversos autores
Modelos de Inteligencia Emocional segundo diversos autores
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 

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