private void Atira(Inimigo inimigo) { float tempoAtual = Time.time; if (tempoAtual > momentoDoUltimoDisparo + tempoDeRecarga) { momentoDoUltimoDisparo = tempoAtual; GameObject pontoDeDisparo = this.transform.Find("CanhaoDaTorre/PontoDeDisparo").gameObject; Vector3 posicaoDoPontoDeDisparo = pontoDeDisparo.transform.position; GameObject projetilObject = (GameObject)Instantiate(projetilPrefab, posicaoDoPontoDeDisparo, Quaternion.identity); Missil missil = projetilObject.GetComponent <Missil> (); missil.DefineAlvo(inimigo); } }
// Instancia um míssil para ser disparado e passa informações sobre qual inimigo ele deverá seguir: private void Atira(Inimigo inimigo) { float tempoAtual = Time.time; if (tempoAtual > tempoUltimoDisparo + tempoRecarga) { tempoUltimoDisparo = tempoAtual; GameObject pontoDeDisparo = this.transform.Find("PontoDeDisparo").gameObject; Vector3 posicaoDisparo = pontoDeDisparo.transform.position; GameObject projetilObject = (GameObject)Instantiate(projetilPrefab, posicaoDisparo, Quaternion.identity); // Passa para o míssil o inimigo que ele deverá seguir: Missil missil = projetilObject.GetComponent <Missil> (); missil.DefineAlvo(inimigo); } }
private void Dispara() { GameObject alvo = EscolheAlvo(); if (alvo) { float tempoAtual = Time.time; if (tempoAtual > tempoUltimoDisparo + tempoDeRecarga) { tempoUltimoDisparo = tempoAtual; //pega o game object responsável pela posição do ponto de disparo dentro do canhao GameObject pontoDeDisparo = this.transform.Find("canhaoDaTorre/pontoDeDisparo").gameObject; //pega a posicao do gameobject Vector3 posicaoPontoDeDisparo = pontoDeDisparo.transform.position; //instancia o missel (prefab) na posicao do gameObject GameObject missilPrefab = Instantiate(projetilPrefab, posicaoPontoDeDisparo, Quaternion.identity); Missil missil = missilPrefab.GetComponent <Missil> (); missil.DefineAlvo(alvo); } } }
/// <summary> /// Verifica a existência de colisões pixel a pixel /// </summary> /// <param name="cManager">Instância de ContentManager</param> /// <param name="scene">Instância de scene</param> /// <param name="sprite">Sprite a verificar</param> /// <param name="origemBala">Entidade que deu origem à bala</param> static public void Colision(ContentManager cManager, Scene scene, Sprite sprite, OrigemBala origemBala) { //Colisao com enimigos if (scene.Collides(sprite, out collided, out collisionPoint, scene.inimigos)) { if (origemBala == OrigemBala.player) { if (sprite is Missil) { Missil missil = (Missil)sprite; missil.thrust.Destroy(); missil.Destroy(); } //cria explosao scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.2f)); if (collided is NPC) { NPC inimigo = (NPC)collided; if (sprite is Missil) { scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.9f)); inimigo.Destroy(); } else { inimigo.Vida--; } } if (collided is Boss) { Boss boss = (Boss)collided; if (sprite is Missil) { scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.9f)); boss.Vida -= 10; } else { boss.Vida--; } } sprite.Destroy(); } if (collided is Missil) { Missil missil = (Missil)collided; scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.2f)); if (missil.thrust != null) { missil.thrust.Destroy(); } missil.Destroy(); } } if (scene.Collides(sprite, out collided, out collisionPoint, scene.sprites)) { if (collided is Cenario && sprite is Bala) { scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.2f)); } if (collided is Player) { Player player = (Player)collided; if (sprite is Missil) { Missil missil = (Missil)sprite; missil.thrust.Destroy(); missil.Destroy(); player.Vida -= 2; scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.4f)); } else { player.Vida--; scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.2f)); } } if (!(collided is Bala)) { sprite.Destroy(); } } }