void Start() { data = (ErgateAntData)GetComponent <ErgateAnt>().Data; //HostAnt = new ErgateAnt(); HostAnt = (ErgateAnt)GetComponent <ErgateAnt>(); //目的地の設定 var elements = NestSystem.Instance.NestElements; Debug.Log(elements.Count); foreach (var element in elements) { if (element.GetType().Name.Equals("StoreRoom")) { nodeNest = element.GetNodes().ElementAt(0); } } //以下デバッグ用 Vector3 a = HostAnt.transform.position; a.z = -1; HostAnt.transform.position = a; HostAnt.transform.localScale = new Vector3(1 / 2f, 1 / 2f, 1); nodeFeed = NestSystem.Instance.NestElements[1].GetNodes().FirstOrDefault(n => n.Name == "top"); //nodeFeed = null; if (nodeFeed == null) { Debug.Log("nullです"); } ErgateAntStart(nodeFeed); //ここまで }
void Start() { data = (ErgateAntData)GetComponent <ErgateAnt>().Data; antMovement = GetComponent <AntMovement>(); //目的地の設定 var elements = NestSystem.Instance.NestElements; Debug.Log(NestSystem.Instance.NestElements.Count); foreach (var element in elements) { if (element.GetType().Name.Equals("StoreRoom")) { nodeNest = element.GetNodes().ElementAt(0); } /* * else if (element.GetType().Name.) * { * * } */ } nodeFeed = NestSystem.Instance.NestElements[0].GetNodes().ElementAt(0); //餌と巣の位置情報はテスト用(後で削除または変更する可能性あり) //現在置 //自身の座標を取得 antMovement.nowPlace = transform.position; //探索ごとにAStarSearcherインスタンスを作る IEnumerable <IPathNode> routes = NestSystem.Instance.FindRoute(nodeNest, nodeFeed); //結果はsearcher.Routeに入る foreach (var node in routes) { Debug.Log(node.WorldPosition); v.Add(node.WorldPosition); I++; } //ありの状態の取得 //初期位置 antMovement.nowPlace = transform.position; //アリのスピード取得(未取得) //public float speed = hogehoge.speed; //試験用スピード //これは後で削除 antMovement.speed = 0.01f; //node間の移動を計算し足していく値 //最初は1番目の目的地へと向かう i = 1; target = v[i]; antMovement.way = antMovement.Explore(target); }
//Debug用スタートプログラム private void ErgateAntStart(NestPathNode target) { if (target != null) { Debug.Log("start!"); HostAnt.StartForPathNode(target, GetFeed, Cancel); } else { Debug.Log("働きたくないでござる"); } }
public override void PeriodicUpdate() { if (!_enemyAnt.Data.IsAlive) { Controller.ChangeStrategy(new SoldierStandbyStrategy()); } var combatDistance = GetAntCommonData <SoldierAntCommonData>().CombatDistance; //戦闘距離内なら戦闘に移行 if (Vector3.Distance(_enemyAnt.transform.position, Controller.Ant.transform.position) < combatDistance) { Controller.ChangeStrategy(new SoldierCombatStrategy(_enemyAnt)); return; } var enemyNode = _enemyAnt.SupposeCurrentPosNode(); //敵アリの位置が変化していなければそのまま移動を続ける if (_currentTargetNode == enemyNode) { return; } _currentTargetNode = enemyNode; void HandleArrived() { } void HandleAborted() { Controller.ChangeStrategy(new SoldierStandbyStrategy()); } Controller.Ant.StartForPathNode(_currentTargetNode, HandleArrived, HandleAborted); }