public static void DoEnemySpawned(EnemyMissile _enemy) { if (OnEnemySpawned != null) { OnEnemySpawned(_enemy); } }
void OnEnemySpawned(EnemyMissile _enemy) { if (!lockOn) { enemies.Enqueue(_enemy); } }
//何かにぶつかった時に呼ばれる void OnCollisionEnter(Collision other) { if (other.gameObject.tag == "EnemyBullet") { //弾の攻撃力とか取るためのやつ EnemyBullet Bullet = other.gameObject.GetComponent <EnemyBullet>(); //乱数を得る int Damage = Bullet.getAttackPower() + Bullet.getErrorRange(); //シールド値を減らす Sys.setHP(Sys.getHP() - Damage); } if (other.gameObject.tag == "EnemyMissile") { if (Sys.getRollingFlagA() == 0 && Sys.getRollingFlagD() == 0) { //弾の攻撃力とか取るためのやつ EnemyMissile Missile = other.gameObject.GetComponent <EnemyMissile>(); //乱数を得る int Damage = Missile.getAttackPower() + Missile.getErrorRange(); //シールド値を減らす Sys.setHP(Sys.getHP() - Damage); } } }
protected override void Awake() { base.Awake(); _EnemyCharacter = GetComponent <EnemyCharacter>(); _EnemyMissilePrefab = ResourceManager.Instance.LoadResource <GameObject>( "EnemyMissile", "Prefabs/Missile/EnemyMissile").GetComponent <EnemyMissile>(); }
public void Shoot(Vector3 end) { transform.LookAt(end); float time = (end - transform.position).magnitude / speed; LeanTween.move(gameObject, end, time); Delayed.Action(gameObject, () => { EnemyMissile.DestroyMissilesWithin(end, destroyRadius); Instantiate <GameObject>(explosionPrefab, end, Quaternion.identity); Destroy(gameObject, 0.01f); }, time); }
// Update is called once per frame void Update() { if (Time.fixedTime >= nextShot) { //create missile at current position, headed along the spawner's GameObject o = Instantiate(Enemy, transform.position, Quaternion.identity) as GameObject; EnemyMissile e = o.GetComponent <EnemyMissile>(); //Fire a shot along the y-axis of the spawner, at speed speed e.InitEnemy(transform.right, speed, missileTimeOut); //update time of next shot nextShot = Time.fixedTime + interval; } }
private void OnCollisionEnter2D(Collision2D other) { EnemyMissile enemy = other.gameObject.GetComponent <EnemyMissile>(); Missile missile = other.gameObject.GetComponent <Missile>(); if (enemy != null) { enemy.DestroyEnemyMissile(); } if (missile != null) { missile.Explode(); } }
public void CheckCollisionLoop(PlayerExplosion explosion) { enemyMissiles = EnemyMissilePool.Instance.ObjectList; for (int i = 0; i < enemyMissiles.Count; i++) { EnemyMissile missile = enemyMissiles[i]; if (CheckCollision(explosion.gameObject, missile.gameObject, 1.0f)) { missile.ExplodeAndReturnToPool(); } } }
//射击方法 void Shooting() { //实例化_missile _tempMis = Instantiate(_missile); _tempMis.SetActive(true);//设置可显式 //在Unity加一个新标签 _tempMis.tag = "EnemyMissile"; //敌机子弹放在父物体上 _tempMis.transform.SetParent(transform); _tempMis.transform.localPosition = Vector3.zero; _tempMis.transform.localScale = Vector3.one; _tempMis.transform.localRotation = new Quaternion(); _tempEnemMis = _tempMis.AddComponent <EnemyMissile>(); //调用敌机死亡后 子弹继续存在的方法 _tempEnemMis.Inst(); }
private void SetRocket(GameObject rocket) { EnemyMissile missle = rocket.GetComponent <EnemyMissile>(); missle.startingPoint = startingPoint; missle.startingPoint = startingPoint; missle.velocity = velocity; if (WhenEnemyRocketDiesDelegate != null) { rocket.GetComponent <HealthComponent>().BeforeObjectDies += WhenEnemyRocketDiesDelegate; } if (accelerator > 0) { missle.accelerator = accelerator; } }
void OnEnemySpawned(EnemyMissile _enemy) { if (!disabled.Value) { EnemyGroupBundle[] currentEnemyGroups = waveBundles[waveIndex].enemyGroupBundles; if (enemyGroupsIndex == currentEnemyGroups.Length - 1 && enemiesInGroupIndex == waveBundles[waveIndex].enemyGroupBundles[enemyGroupsIndex].count - 1) { SpawnEnemy.Ins.stopSpawning = true; return; } if (++enemiesInGroupIndex == currentEnemyGroups[enemyGroupsIndex].count) { ++enemyGroupsIndex; enemiesInGroupIndex = 0; } } }
public IEnumerator SpawnMissiles() { while (missilesToSpawnThisRound > 0) { float randomX = Random.Range(minX, maxX); Vector3 dir = missilePrefab.transform.position - transform.position; float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg; transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward); Vector3 spawnPosition = new Vector3(randomX, yValue + Yscreen, 0); GameObject missile = Instantiate(missilePrefab, new Vector3(randomX, yValue + Yscreen, 0), Quaternion.identity); EnemyMissile enemyMissile = missile.GetComponent <EnemyMissile>(); enemyMissile.StartingLocation = spawnPosition; missilesToSpawnThisRound--; yield return(new WaitForSeconds(delayBetweenMissiles)); } }
void SpawnEnemy_3() { spawnTimer += Time.deltaTime; if (spawnTimer >= spawnTime) { spawnTimer = 0; var cannons = GlobalManager.cannons; Cannon randCannon = cannons[Random.Range(0, cannons.Count)]; EnemyMissile enemy = Instantiate(prefabDefaultEnemy).GetComponent <EnemyMissile>(); enemy.transform.position = new Vector3( randCannon.transform.position.x , ManageSceneSetup.Ins.spawnVerticalRange.y , ManageSceneSetup.Ins.playField.transform.position.z); enemy.transform.LookAt(randCannon.transform.position); enemy.SetDest(randCannon.transform.position); GameEventSignals.DoEnemySpawned(enemy); } }
void FixedUpdate() { //敵のミサイル処理 Missile = GameObject.FindGameObjectsWithTag("EnemyMissile"); //非表示 MissileText.color = new Color(0f, 0f, 0f, 0f); Flag = 0; Min = 1000000000; if (Missile != null) { for (int i = 0; i < Missile.Length; i = i + 1) { EnemyMissile MissileSys = Missile[i].GetComponent <EnemyMissile>(); if (MissileSys.getPassingFlag() == 0) { //表示 MissileText.color = new Color(1f, 0.5f, 0f, 1f); Distance = (Missile[i].GetComponent <Transform>().position - Jet.transform.position).magnitude; Flag = 1; if (Distance < Min) { Min = Distance; } } else { Flag = 0; } } } // テキストの表示を入れ替える MissileText.text = "" + Min.ToString("f0"); }
// Update is called once per frame void Update() { if (preDelay > 0f) { preDelay -= Time.deltaTime; return; } shootTimer -= Time.deltaTime; if (shootTimer < 0f) { City c = City.RandomCity(); if (null != c) { EnemyMissile newMissile = Instantiate(missilePrefab).GetComponent <EnemyMissile>(); newMissile.transform.position = transform.position; newMissile.transform.position += new Vector3(-0.5f + Random.value, 0f, -0.5f + Random.value) * 3f; newMissile.Shoot(c); } shootTimer = appxInterval * Random.Range(0.9f, 1.1f); appxInterval *= 0.95f; } }
void SpawnEnemy_2() { spawnTimer += Time.deltaTime; if (spawnTimer >= ManageWave.Ins.enemySpawnTime) { spawnTimer = 0; var cannons = GlobalManager.cannons; var waveManager = ManageWave.Ins; Cannon randCannon = cannons[Random.Range(0, cannons.Count)]; EnemyMissile enemy = Instantiate( waveManager.waveBundles[waveManager.waveIndex].enemyGroupBundles[waveManager.enemyGroupsIndex].prefab).GetComponent <EnemyMissile>(); enemy.transform.position = new Vector3( Random.Range(ManageSceneSetup.Ins.spawnHorizontalRange.x, ManageSceneSetup.Ins.spawnHorizontalRange.y) , ManageSceneSetup.Ins.spawnVerticalRange.y , ManageSceneSetup.Ins.playField.transform.position.z); enemy.transform.LookAt(randCannon.transform.position); enemy.SetDest(randCannon.transform.position); GameEventSignals.DoEnemySpawned(enemy); } }
public void Update(double time) { listNode = Engine.instance.NodeListByType[typeof(ShootEnemyNode)]; foreach (ShootEnemyNode n in listNode) { n.ShootComponent.TimeSinceLastShoot += time; if (n.ShootComponent.TimeSinceLastShoot >= n.ShootComponent.FireRate) { int probabilty = this.random.Next(0, 200000);//Changer le maximum pour diminuer la proba de tirer if (probabilty < n.ShootComponent.NextShootProbability) { n.ShootComponent.NextShootProbability = n.ShootComponent.ShootBaseProbability; n.ShootComponent.TimeSinceLastShoot = 0; Vecteur2D posMissile = n.EnemyPosition.Position + new Vecteur2D(15, 24); EnemyMissile missile = new EnemyMissile(posMissile); Engine.instance.AddEntity(missile); } else { n.ShootComponent.NextShootProbability += 1; } } } }
public static void DestroyMissilesWithin(Vector3 point, float radius) { float sqrRad = radius * radius; for (int i = 0; i < missileInstances.Count; i++) { EnemyMissile em = missileInstances[i]; if (null == em) { missileInstances.RemoveAt(i); i--; continue; } if ((em.transform.position - point).sqrMagnitude < sqrRad) { missilesBlownUp++; Instantiate <GameObject>(em.explosionPrefab, em.transform.position, Quaternion.identity); Destroy(em.gameObject); missileInstances.RemoveAt(i); i--; continue; } } }
private IEnumerator Shot() { yield return(new WaitForSeconds(InitializationTime)); while (true) { for (int i = 0; i < ChainNum; i++) { for (int j = FirstBulletNum; j <= LastBulletNum; j++) { GameObject g = Instantiate(EnemyMissilePrefab, transform.position, Quaternion.identity) as GameObject; EnemyMissile em = g.GetComponent <EnemyMissile>(); parents = transform.parent.gameObject; //enemyとの差をとり、単位ベクトル化する Vector2 direction = (transform.position - parents.transform.position).normalized; //ベクトルに回転をかけて向きを変える direction = Quaternion.Euler(0.0f, 0.0f, Degree * j) * direction; em.SetMissile(parents.transform.position, direction, Speed); } yield return(new WaitForSeconds(ChainRestoreTime)); } yield return(new WaitForSeconds(RestoreTime)); } }
protected override void SpawnMissiles() { Vector3 randomPointInCamera = Camera.main.ScreenToWorldPoint(new Vector2(Random.Range(0, Screen.width), Screen.height)); GameObject missile = m_pooler.GetClone(); EnemyMissile eMissile = missile.GetComponent <EnemyMissile>(); missile.transform.position = new Vector3(randomPointInCamera.x, randomPointInCamera.y, 0f); Vector3 targetPosition = Vector3.zero; Vector3 defaultPositionInCamera = new Vector3 ( missile.transform.position.x, 0f, missile.transform.position.z ); int randomTargetIndex = Random.Range(0, m_listOfTargets.Count - 1); targetPosition = m_listOfTargets[randomTargetIndex].transform.position; missile.transform.LookAt(defaultPositionInCamera, Vector3.back); eMissile.ReadyMissile(this, targetPosition); missile.SetActive(true); m_releaseInterval = m_releaseHolder; }
private void Gameplay_Update(int GameState, GameTime pGameTime, ContentManager Content) { if (keyboard != previousKeyboard && keyboard.IsKeyDown(Keys.Escape) && pause) { this.Game_State = 0; } if (keyboard.IsKeyDown(Keys.Escape)) { pause = true; this.Pause = mstate.Position; } if (keyboard != previousKeyboard && keyboard.IsKeyDown(Keys.Enter) && pause) { pause = false; Mouse.SetPosition(Pause.X, Pause.Y); } if (!pause) { foreach (Enemy var1 in enemyFighter) { var1.Update(pGameTime); } foreach (Sprite HUD in hud) { HUD.Update(pGameTime); } foreach (Right_HUD R_H in R_hud) { R_H.Update(pGameTime); } SSV.Update(pGameTime); cone.Update(pGameTime); //Enemies Update foreach (Fighter Enemies in EnemyFighter) { Point ID = Enemies.Update(pGameTime); if (ID != Point.Zero) { TargetID = ID; } Enemies.UpdatePositionAngle(cone); if (Enemies.FireWeapon) { int i = 0; if (EnemyMissile.Count != 0) { while (i < EnemyMissile.Count && EnemyMissile[i] != null) { i++; } } Missile var = new Missile(content, this, i, new Point(0, 0)); EnemyMissile.Insert(i, var); EnemyMissile[i].SpawnAt(Enemies.Position); EnemyMissile[i].SetDestination(new Vector2(640, 360)); Enemies.FireWeapon = false; } if (!Enemies.IsActive) { EnemyFighterDump.Add(Enemies); } } EnemyFighter = EnemyFighter.Except(EnemyFighterDump).ToList(); foreach (Frigate Enemies in EnemyFrigate) { Point ID = Enemies.Update(pGameTime); if (ID != Point.Zero) { TargetID = ID; } Enemies.UpdatePositionAngle(cone); if (Enemies.FireWeapon) { int i = 0; if (EnemySlug.Count != 0) { while (i < EnemySlug.Count && EnemySlug[i] != null) { i++; } } Slug var = new Slug(content, this); EnemySlug.Insert(i, var); EnemySlug[i].SpawnAt(Enemies.Position); EnemySlug[i].SetDestination(new Vector2(640, 360)); Enemies.FireWeapon = false; } if (!Enemies.IsActive) { EnemyFrigateDump.Add(Enemies); } } EnemyFrigate = EnemyFrigate.Except(EnemyFrigateDump).ToList(); foreach (Carrier Enemies in EnemyCarrier) { Point ID = Enemies.Update(pGameTime); if (ID != Point.Zero) { TargetID = ID; } Enemies.UpdatePositionAngle(cone); if (Enemies.FireWeapon) { AddFigther(content, Enemies.Position, new Vector2(640, 360)); Enemies.FireWeapon = false; } if (!Enemies.IsActive) { EnemyCarrierDump.Add(Enemies); } } EnemyCarrier = EnemyCarrier.Except(EnemyCarrierDump).ToList(); foreach (Dreadnought Enemies in EnemyDreadnought) { Point ID = Enemies.Update(pGameTime); if (ID != Point.Zero) { TargetID = ID; } Enemies.UpdatePositionAngle(cone); if (Enemies.FireWeapon) { int i = 0; if (EnemyCannon.Count != 0) { while (i < EnemyCannon.Count && EnemyCannon[i] != null) { i++; } } Cannon var = new Cannon(content, this, new Point(0, 0), 10); EnemyCannon.Insert(i, var); EnemyCannon[i].SpawnAt(Enemies.Position); Enemies.FireWeapon = false; } if (!Enemies.IsActive) { EnemyDreadnoughtDump.Add(Enemies); } } EnemyDreadnought = EnemyDreadnought.Except(EnemyDreadnoughtDump).ToList(); //endEnemies Update //Weapons Update foreach (Missile Missile in EnemyMissile) { Point ID = Missile.Update(GetPositionByID(Missile.TargetID)); if (ID != Point.Zero) { TargetID = ID; } if (Missile.Friendly == false && Missile.IsMoving == false) { Missile.Destroy = true; enemyMissileDump.Add(Missile); HB_hp -= 1; } else if (Missile.Friendly && !Missile.IsMoving) { DamageTarget(Missile.TargetID, 1); } } enemyMissile = enemyMissile.Except(enemyMissileDump).ToList(); foreach (Laser Lsr in Lasers) { Lsr.Update(); } foreach (Slug Slug in EnemySlug) { Slug.Update(); if (Slug.Friendly == false && Slug.IsMoving == false) { Slug.Destroy = true; enemySlugDump.Add(Slug); HB_hp -= 5; } else if (Slug.Friendly && !Slug.IsMoving) { DamageTarget(Slug.TargetID, 2); } } enemySlug = enemySlug.Except(enemySlugDump).ToList(); foreach (Cannon Cannon in EnemyCannon) { Cannon.Update(); //Add destroy here. } enemySlug = enemySlug.Except(enemySlugDump).ToList(); //endWeapons Update ladar.Update(pGameTime, cone.Lockin, cone.stopAngle_M); if (SpawnBlock == 200) { SpawnEnemy(Content); SpawnBlock = 0; } else { SpawnBlock += 1; } //PlayerWeapons PlayerWpn[0].Update(); PlayerWpn[1].Update(); PlayerWpn[2].Update(); PlayerWpn[3].Update(); PlayerWpn[4].Update(); if (keyboard.IsKeyDown(Keys.D1)) { if (PlayerWpn[0].CanFire) { int i = 0; if (EnemyMissile.Count != 0) { while (i < EnemyMissile.Count && EnemyMissile[i] != null) { i++; } } Missile var = new Missile(content, this, i, TargetID); EnemyMissile.Insert(i, var); EnemyMissile[i].SpawnAt(new Vector2(640, 360)); EnemyMissile[i].SetDestination(GetPositionByID(TargetID)); EnemyMissile[i].Friendly = true; PlayerWpn[0].FireWeapon(); } } else if (keyboard.IsKeyDown(Keys.D2)) { if (PlayerWpn[1].CanFire) { int i = 0; if (Lasers.Count != 0) { while (i < Lasers.Count && Lasers[i] != null) { i++; } } Laser var = new Laser(content, this, TargetID, 10); Lasers.Insert(i, var); Lasers[i].SpawnAt(new Vector2(640, 360)); PlayerWpn[1].FireWeapon(); } } else if (keyboard.IsKeyDown(Keys.D3)) { if (PlayerWpn[2].CanFire) { int i = 0; if (EnemySlug.Count != 0) { while (i < EnemySlug.Count && EnemySlug[i] != null) { i++; } } Slug var = new Slug(content, this); EnemySlug.Insert(i, var); EnemySlug[i].SpawnAt(new Vector2(640, 360)); EnemySlug[i].SetDestination(GetPositionByID(TargetID)); PlayerWpn[2].FireWeapon(); } } else if (keyboard.IsKeyDown(Keys.D4)) { if (PlayerWpn[3].CanFire) { int i = 0; if (EnemyCannon.Count != 0) { while (i < EnemyCannon.Count && EnemyCannon[i] != null) { i++; } } Cannon var = new Cannon(content, this, TargetID, 10); EnemyCannon.Insert(i, var); EnemyCannon[i].SpawnAt(new Vector2(640, 360)); PlayerWpn[3].FireWeapon(); DamageTarget(TargetID, 3); } } else if (keyboard.IsKeyDown(Keys.D5)) { if (PlayerWpn[4].CanFire) { foreach (Fighter var1 in EnemyFighter) { DamageTarget(var1.ID, 4); } foreach (Frigate var1 in EnemyFrigate) { DamageTarget(var1.ID, 4); } foreach (Carrier var1 in EnemyCarrier) { DamageTarget(var1.ID, 4); } foreach (Dreadnought var1 in EnemyDreadnought) { DamageTarget(var1.ID, 4); } } } //End Player Weapons //Dreadnought Countdown foreach (Dreadnought Dreadnought in EnemyDreadnought) { if (Dreadnought.IsMoving == false) { Dreadnought.cannonCountdown -= 1; //Console.WriteLine(Dreadnought.cannonCountdown); } if (Dreadnought.cannonCountdown == 0) { Dreadnought.cannonCountdown = 100; } } //end Dreadnought Countdown } }
void ResetEntireGame() { EnemyMissile.ResetState(); City.ResetState(); SceneManager.LoadScene(0); }