/// <summary> /// 随机生成一个敌机 /// </summary> private void RandomGenerateEnemy() { EnemyAircraft enemy = null; var config = m_enemyRandom.Next(); var aircraftType = (AircraftType)config.Index; if (m_reusePool.ContainsKey(aircraftType) && m_reusePool[aircraftType].Count > 0) { enemy = m_reusePool[aircraftType].Dequeue(); enemy.ActiveSelf(true); } else { enemy = (EnemyAircraft)AircraftFactory.CreateAircraft((AircraftType)config.Index); enemy.backToPoolAction = () => { // 对象回收 if (!m_reusePool.ContainsKey(aircraftType)) { m_reusePool[aircraftType] = new Queue <EnemyAircraft>(); } m_reusePool[aircraftType].Enqueue(enemy); if (m_aliveEnemy.Contains(enemy)) { m_aliveEnemy.Remove(enemy); } }; } enemy.blood = config.Blood; enemy.moveSpeed = Random.Range(config.MinSpeed, config.MaxSpeed); enemy.ResetTimeToFire(1); enemy.RandomStartPos(); if (!m_aliveEnemy.Contains(enemy)) { m_aliveEnemy.Add(enemy); } }
private void OnTriggerEnter(Collider collider) { if (collider.gameObject.tag == "enemyAircraft") { EnemyAircraft enemyTarget = collider.gameObject.GetComponentInParent <EnemyAircraft>(); targetUI = collider.gameObject.GetComponentInChildren <UIFollowTarget>(); targetUI.crosshair.color = Color.magenta; collider.gameObject.GetComponentInChildren <MeshRenderer>().material.color = Color.red; enemyTarget.fuel = enemyTarget.fuel - 10; objectAffected = collider.gameObject; Invoke("RestoreColor", 0.1f); } if (collider.gameObject.tag == "enemyTurret") { Turret enemyTarget = collider.gameObject.GetComponent <Turret>(); targetUI = collider.gameObject.GetComponentInChildren <UIFollowTarget>(); targetUI.crosshair.color = Color.magenta; collider.gameObject.GetComponentInChildren <MeshRenderer>().material.color = Color.red; enemyTarget.fuel = enemyTarget.fuel - 10; objectAffected = collider.gameObject; Invoke("RestoreColor", 0.1f); } }
private void Start() { enemy = GetComponentInParent <EnemyAircraft>(); }