// Start is called before the first frame update void Start() { // Rigidbody2Dを取得する Rigidbody2D rd = GetComponent <Rigidbody2D>(); //目的地の設定 //餌の位置 targetFeed = GameObject.Find("feed").transform.position; //巣の位置 targetNest = GameObject.Find("nest").transform.position; //現在置 nowPlace = GameObject.Find("workingAnt").transform.position; //経路探索のプログラムにぶち込むためのnode作成 nodeGraph = new NodeGraph(); nodeNest = nodeGraph.CreateNode(targetNest); nodeFeed = nodeGraph.CreateNode(targetFeed); //現在は曲がり角を生成していないため、nodeは2つだけ //試しにtargetNestEntrance(巣の出入り口)なるものを曲がり角として用意してみる targetNestEntrance = GameObject.Find("nestEntrance").transform.position; nodeNestEntrance = nodeGraph.CreateNode(targetNestEntrance); // nodeGraph.ConnectNodes(new []{nodeNest, nodeNestEntrance,nodeFeed}); nodeGraph.ConnectNodes(new [] { nodeNest, nodeNestEntrance }); nodeGraph.ConnectNodes(new [] { nodeNestEntrance, nodeFeed }); //探索ごとにAStarSearcherインスタンスを作る searcher = new AStarSearcher(nodeGraph); //経路探索をする searcher.SearchRoute(nodeNest, nodeFeed); Debug.Log(searcher.Route); //結果はsearcher.Routeに入る foreach (var node in searcher.Route) { //vにnode.Posで値を取得する v.Add(node.Pos); Debug.Log(node.ToString()); } //ありの状態の取得 //初期位置 nowPlace = GameObject.Find("workingAnt").transform.position; //対象までにかかる時間 time = 250; //node間の移動を計算し足していく値 //最初は1番目の目的地へと向かう i = 1; target = v[i]; way = explore(target); float x = way.x; float y = way.y; Debug.Log(x); Debug.Log(y); //運搬能力 //ability = 1; }
//運搬能力 //public int ability = 1; // Start is called before the first frame update void Start() { antMovement = new AntMovement(); //目的地の設定 //餌と巣の位置情報はテスト用(後で削除または変更する可能性あり) //餌の位置 targetFeed = GameObject.Find("feed").transform.position; //巣の位置 targetNest = GameObject.Find("nest").transform.position; //現在置 //自身の座標を取得 antMovement.nowPlace = transform.position; //経路探索のプログラムにぶち込むためのnode作成 nodeGraph = new NodeGraph(); nodeNest = nodeGraph.CreateNode(targetNest); nodeFeed = nodeGraph.CreateNode(targetFeed); //現在は曲がり角を生成していないため、nodeは2つだけ //試しにtargetNestEntrance(巣の出入り口)なるものを曲がり角として用意してみる targetNestEntrance = GameObject.Find("nestEntrance").transform.position; nodeNestEntrance = nodeGraph.CreateNode(targetNestEntrance); //nodeをそれぞれつなげる作業 //nodeGraph.ConnectNodes(new []{from,to});→ fromからtoへnodeをつなげる //nodeGraph.ConnectNodes(new []{A, B,C});→ABCの循環円を作成 nodeGraph.ConnectNodes(new [] { nodeNest, nodeNestEntrance }); nodeGraph.ConnectNodes(new [] { nodeNestEntrance, nodeFeed }); //探索ごとにAStarSearcherインスタンスを作る searcher = new AStarSearcher(nodeGraph); //経路探索をする searcher.SearchRoute(nodeNest, nodeFeed); Debug.Log(searcher.Route); //結果はsearcher.Routeに入る foreach (var node in searcher.Route) { //vにnode.Posで値を取得する v.Add(node.WorldPosition); //Debug.Log(node.ToString()); I++; //vの大きさ } //ありの状態の取得 //初期位置 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); }
// Start is called before the first frame update void Start() { Debug.Log("testStart"); //経路グラフはNodeGraphで表現する NodeGraph nodeGraph = new NodeGraph(); Node nodeA = nodeGraph.CreateNode(new Vector2(0, 0)); Node nodeB = nodeGraph.CreateNode(new Vector2(-5, 10)); Node nodeC = nodeGraph.CreateNode(new Vector2(0, 5)); Node nodeD = nodeGraph.CreateNode(new Vector2(10, 10)); Node nodeE = nodeGraph.CreateNode(new Vector2(10, 0)); //それぞれをつなげる nodeGraph.ConnectNodes(new [] { nodeA, nodeB, nodeC }); nodeGraph.ConnectNodes(new [] { nodeB, nodeC, nodeD }); nodeGraph.ConnectNodes(new [] { nodeA, nodeE }); nodeGraph.ConnectNodes(new [] { nodeD, nodeE }); Debug.Log(nodeA.ToString()); Debug.Log(nodeB.ToString()); Debug.Log(nodeC.ToString()); Debug.Log(nodeD.ToString()); Debug.Log(nodeE.ToString()); Debug.Log("graphOk"); Debug.Log("AStarSearchStart"); var stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); //探索ごとにAStarSearcherインスタンスを作る AStarSearcher searcher = new AStarSearcher(nodeGraph); //経路探索をする searcher.SearchRoute(nodeB, nodeE); stopWatch.Stop(); Debug.Log(stopWatch.ElapsedMilliseconds + "ms"); Debug.Log("Route:"); //結果はsearcher.Routeに入る foreach (var node in searcher.Route) { Debug.Log(node.ToString()); } // Debug.Log(); }