public static GameObject GetCloseManufactory(Vector3 pos, float radius = -0.1f) { m_hunterManufactorys = GameObject.FindGameObjectsWithTag("HunterManufactory"); GameObject result = null; float distance = radius; // 指定範囲内かつ人手が足りていない製作所を探す foreach (var manufactory in m_hunterManufactorys) { HunterManufactory factory = manufactory.GetComponent <HunterManufactory>(); // 製作に向かう必要がない if (factory.IsSupport() == false) { continue; } // 近い製作所を優先 Vector3 factoryPos = manufactory.transform.position; float dis = (factoryPos - pos).magnitude; if (dis < distance || distance < 0.0f) { distance = dis; result = manufactory; } } return(result); }
private void GoToManufactory(StateData data) { // 移動コンポーネント Movement movement = data.movement; // 近くの製作所を探す GameObject target = AIManager.GetCloseManufactory(data.ai.transform.position); // 製作所がある if (target) { targetFactory = target.GetComponent <HunterManufactory>(); targetFactory.CreaterPos = data.ai.transform; targetObj = target; // 製作所に向かう movement.SetDestination(targetObj.transform.position); targetFactory.ManufactureNum++; } else { // 警戒状態解除 data.ai.ChangeState(new CitizenNormalState()); return; } }
private void Awake() { hunterManufactory = null; actorText = GameObject.Find("SurvivorText").GetComponent <Text>(); rateText = GameObject.Find("RateNumText").GetComponent <Text>(); }