//1- поиск железа, 2- поиск меди, 3- поиск хранилища private void FindEnemy(int flag) { float min = FindRadius; float dist = 0; switch (flag) { case 1: { var enemies = GameObject.FindObjectsOfType <iron_resources>(); iron_resources minEnemy = null; foreach (var e in enemies) { dist = Vector3.Distance(e.transform.position, transform.position); if (dist <= min) { min = dist; minEnemy = e; } } enemy = minEnemy; if (enemy == null) { IsWork = false; IsUnemployed = true; } break; } case 2: { var enemies = GameObject.FindObjectsOfType <iron_resources>(); break; } case 3: { var stocks = GameObject.FindObjectsOfType <StockControl>(); StockControl minStock = null; foreach (var e in stocks) { dist = Vector3.Distance(e.transform.position, transform.position); if (dist <= min) { min = dist; minStock = e; //break; } } Stock_ = minStock; break; } } }
// Update is called once per frame void Update() { if (IsUnemployed) { return; } if (InComingStock) { GoToStock(); } if (IsFull()) { IsWork = false; InComingStock = true; FindEnemy(3); return; } if (!IsWork) { if (enemy == null) { // Ищем противника FindEnemy(1); } GoToPath(); return; } //IsWork = false; bool inf = false; if (!enemy) { IsWork = false; } int dop = enemy.Production(extractionInTTact, ref inf); inventory += dop; Invoke("EnableGO", 10f); //print(inventory); if (inf) { if (enemy) { Destroy(enemy.gameObject); } enemy = null; IsWork = false; } }
// Use this for initialization private void Awake() { IsUnemployed = false; InComingStock = false; IsWork = false; IsAWay = true; enemy = null; Stock_ = null; maxSpaciousness = 18; extractionInTTact = 2; inventory = 0; }