Example #1
0
    // void Start()
    public void Load()
    {
        // マップ読み込み
        TMXLoader tmx = new TMXLoader();

        tmx.Load("Levels/map");

        // 経路レイヤーを取得
        Layer2D lPath = tmx.GetLayer("path");

        // 開始地点を検索
        Vec2D pos = lPath.Search(CHIP_PATH_START);

        // 座標リストを作成
        _path = new List <Vec2D>();

        // 開始座標を座標リストに登録
        _path.Add(new Vec2D(pos.X, pos.Y));

        // 通路をふさぐ
        lPath.Set(pos.X, pos.Y, CHIP_NONE);

        // 座標リスト作成
        CreatePath(lPath, pos.X, pos.Y, _path);

        // コリジョンレイヤーを取得する
        _lCollision = tmx.GetLayer("collision");
    }
Example #2
0
    // ロード開始
    public void Load(int stage)
    {
        TMXLoader tmx = new TMXLoader();

        // ファイルパスを作成
        string path = string.Format("Levels/{0:D3}", stage);

        tmx.Load(path);

        // 0番目のレイヤーに情報を取得する
        Layer2D layer = tmx.GetLayer(0);

        // タイルの配置
        for (int j = 0; j < layer.Height; j++)
        {
            for (int i = 0; i < layer.Width; i++)
            {
                // 座標を指定してレイヤーの値を取得
                int   v = layer.Get(i, j);
                float x = GetChipX(i);
                float y = GetChipY(j);

                switch (v)
                {
                case CHIP_PLAYER:
                {
                    // プレイヤを移動させる
                    GameObject obj    = GameObject.Find("Player") as GameObject;
                    Player     player = obj.GetComponent <Player>();
                    player.SetPosition(x, y);
                }
                break;

                case CHIP_WALL:
                    // 壁を作成
                    Wall.Add(x, y);
                    break;

                case CHIP_SPIKE:
                    // トゲを生成
                    Spike.Add(x, y);
                    break;

                case CHIP_FLOOR_MOVE:
                    // 移動床を作成
                    FloorMove.Add(x, y);
                    break;

                case CHIP_GOAL:
                {
                    // ゴールを移動させる
                    GameObject obj  = GameObject.Find("Goal") as GameObject;
                    Goal       goal = obj.GetComponent <Goal>();
                    goal.SetPosition(x, y);
                }
                break;
                }
            }
        }
    }
Example #3
0
    // ロード開始
    public void Load(int stage)
    {
        TMXLoader tmx = new TMXLoader ();

        // ファイルパスを作成
        string path = string.Format ("Levels/{0:D3}", stage);
        tmx.Load (path);

        // 0番目のレイヤーに情報を取得する
        Layer2D layer = tmx.GetLayer (0);

        // タイルの配置
        for (int j = 0; j < layer.Height; j++)
        {
            for (int i = 0; i < layer.Width; i++)
            {
                // 座標を指定してレイヤーの値を取得
                int v = layer.Get(i, j);
                float x = GetChipX(i);
                float y = GetChipY(j);

                switch (v)
                {
                case CHIP_PLAYER:
                    {
                        // プレイヤを移動させる
                        GameObject obj = GameObject.Find("Player") as GameObject;
                        Player player = obj.GetComponent<Player>();
                        player.SetPosition(x, y);
                    }
                    break;

                case CHIP_WALL:
                    // 壁を作成
                    Wall.Add(x, y);
                    break;

                case CHIP_SPIKE:
                    // トゲを生成
                    Spike.Add(x, y);
                    break;

                case CHIP_FLOOR_MOVE:
                    // 移動床を作成
                    FloorMove.Add(x, y);
                    break;

                case CHIP_GOAL:
                    {
                        // ゴールを移動させる
                        GameObject obj = GameObject.Find("Goal") as GameObject;
                        Goal goal = obj.GetComponent<Goal>();
                        goal.SetPosition(x, y);
                    }
                    break;
                }
            }
        }
    }
Example #4
0
    // Start is called before the first frame update
    void Start()
    {
        //マップ読み込み
        TMXLoader tmx = new TMXLoader();

        tmx.Load("Levels/map");

        //経路レイヤーを取得
        Layer2D path = tmx.GetLayer("path");

        //デバッグ出力
        path.Dump();
    }
Example #5
0
    public void Load(int stage)
    {
        TMXLoader tmx  = new TMXLoader();
        string    path = string.Format("Levels/{0:D3}", stage);

        tmx.Load(path);
        Layer2D layer = tmx.GetLayer(0);

        //Debug.Log ("幅:" + layer.Width);
        //Debug.Log ("高:" + layer.Height);
        for (int j = 0; j < layer.Height; j++)
        {
            for (int i = 0; i < layer.Width; i++)
            {
                int   v = layer.Get(i, j);
                float x = GetChipX(i);
                float y = GetChipY(j);
                switch (v)
                {
                case CHIP_PLAYER:
                {
                    GameObject obj    = GameObject.Find("Player") as GameObject;
                    Player     player = obj.GetComponent <Player> ();
                    player.SetPosition(x, y);
                }
                break;

                case CHIP_WALL:
                    Wall.Add(x, y);
                    break;

                case CHIP_SPIKE:
                    Spike.Add(x, y);
                    break;

                case CHIP_FLOOR_MOVE:
                    FloorMove.Add(x, y);
                    break;

                case CHIP_GOAL:
                {
                    GameObject obj  = GameObject.Find("Goal") as GameObject;
                    Goal       goal = obj.GetComponent <Goal>();
                    goal.SetPosition(x, y);
                }
                break;
                }
            }
        }
    }
Example #6
0
    IEnumerator Start()
    {
        // 地形データのロード.
        var tmx = new TMXLoader();
        tmx.Load("Levels/001");
        var layer = tmx.GetLayer(0);
        //layer.Dump();

        // タイルの配置.
        for(int j = 0; j < layer.Height; j++) {
            for(int i = 0; i < layer.Width; i++) {
                var v = layer.Get(i, j);
                var x = GetChipX(i);
                var y = GetChipY(j);
                Tile.Add(v, x, y);
            }
        }
        yield return new WaitForSeconds(0.1f);

        var pList = new List<Point2>();
        Token player = null;
        // A-star実行.
        {
            // スタート地点.
            Point2 pStart = GetRandomPosition(layer);
            player = Util.CreateToken(GetChipX(pStart.x), GetChipY(pStart.y), "", "miku2", "Player");
            player.SortingLayer = "Chara";
            // ゴール.
            Point2 pGoal = GetRandomPosition(layer);
            var goal = Util.CreateToken(GetChipX(pGoal.x), GetChipY (pGoal.y), "", "gate1", "Goal");
            goal.SortingLayer = "Chara";
            // 斜め移動を許可
            var allowdiag = true;
            var mgr = new ANodeMgr(layer, pGoal.x, pGoal.y, allowdiag);

            // スタート地点のノード取得
            // スタート地点なのでコストは「0」
            ANode node = mgr.OpenNode(pStart.x, pStart.y, 0, null);
            mgr.AddOpenList(node);

            // 試行回数。1000回超えたら強制中断
            int cnt = 0;
            while(cnt < 1000) {
                mgr.RemoveOpenList(node);
                // 周囲を開く
                mgr.OpenAround(node);
                // 最小スコアのノードを探す.
                node = mgr.SearchMinScoreNodeFromOpenList();
                if(node == null) {
                    // 袋小路なのでおしまい.
                    Debug.Log ("Not found path.");
                    break;
                }
                if(node.X == pGoal.x && node.Y == pGoal.y) {
                    // ゴールにたどり着いた.
                    Debug.Log ("Success.");
                    mgr.RemoveOpenList(node);
                    node.DumpRecursive();
                    // パスを取得する
                    node.GetPath(pList);
                    // 反転する
                    pList.Reverse();
                    break;
                }

                yield return new WaitForSeconds(0.01f);
            }
        }

        _state = eState.Walk;
        // プレイヤーを移動させる.
        foreach(var p in pList) {
            var x = GetChipX (p.x);
            var y = GetChipY (p.y);
            player.X = x;
            player.Y = y;
            yield return new WaitForSeconds(0.2f);
        }

        // おしまい
        _state = eState.End;
    }
Example #7
0
    IEnumerator Start()
    {
        // 地形データのロード.
        var tmx = new TMXLoader();
        tmx.Load("Levels/001");
        var layer = tmx.GetLayer(0);

        // フィールドのタイルを1つずつ配置する
        for (int j = 0; j < layer.Height; j++) // 縦
        {
            for (int i = 0; i < layer.Width; i++) // 横
            {
                // 座標の値を取得
                var v = layer.Get(i, j);
                var x = GetChipX(i);
                var y = GetChipY(j);
                // スプライトを設定し、タイルを作成する
                Tile.Add(v, x, y);
            }
        }
        yield return new WaitForSeconds(0.1f);

        // パスリスト(最終的にユニットが通るパネル座標のリスト)
        var pathList = new List<Point2>();
        // ユニットの基底クラス
        Token player = null;

        // A-star実行
        {
            // スタート地点を設定
            Point2 pStart = GetRandomPosition(layer);
            player = Util.CreateUnit(GetChipX(pStart.x), GetChipY(pStart.y), "", "miku2", "Player");
            player.SortingLayer = "Chara";
            // ゴール地点を設定
            Point2 pGoal = GetRandomPosition(layer);
            var goal = Util.CreateUnit(GetChipX(pGoal.x), GetChipY(pGoal.y), "", "gate1", "Goal");
            goal.SortingLayer = "Chara";
            // 斜め移動可否判定を決定
            var allowdiag = false;

            // コンストラクタにそれぞれの値を渡してインスタンス化
            var anodeManager = new ANodeManager(layer, pGoal.x, pGoal.y, allowdiag);

            // スタート地点のノードを取得し、最小ノードに設定する。スタート地点なのでコストは「0」
            ANode minScoreNode = anodeManager.OpenNode(pStart.x, pStart.y, 0, null);
            // それをオープンノードリストに追加する
            anodeManager.AddOpenNodeList(minScoreNode);

            // 移動試行回数。1000回超えたら強制中断
            int cnt = 0;
            while (cnt < 1000)
            {
                // 今いるパネルをオープンノードリストから削除
                anodeManager.RemoveOpenNodeList(minScoreNode);
                // 周囲を開く
                anodeManager.OpenAround(minScoreNode);
                // 最小スコアのノードを探す.
                minScoreNode = anodeManager.SearchMinScoreNodeFromOpenList();

                if (minScoreNode == null)
                {
                    // 最小スコアのノードがない場合は終了
                    Debug.Log("Not found path.");
                    break;
                }

                // ゴールまでの経路算出が完了した場合?
                if (minScoreNode.X == pGoal.x && minScoreNode.Y == pGoal.y)
                {
                    Debug.Log("Success.");
                    // オープンノードリストから最小スコアのノードを削除する
                    anodeManager.RemoveOpenNodeList(minScoreNode);

                    // 再帰的ダンプ?
                    minScoreNode.DumpRecursive();

                    // パスを取得する
                    minScoreNode.GetPath(pathList);

                    // pathListがゴール→現在位置という並びになっているので現在位置→ゴールの並びにするため反転を行う
                    pathList.Reverse();
                    break;
                }
                yield return new WaitForSeconds(0.01f);
            }
        } // A-star実行ここまで

        // ユニットの状態を移動中に変更し、移動を実施する
        _state = eState.nowMoving;
        foreach (var p in pathList)
        {
            // 移動先パネルのXY値を取得
            var x = GetChipX(p.x);
            var y = GetChipY(p.y);
            // 移動実施
            player.X = x;
            player.Y = y;
            // ちょっと待たないと瞬間移動する
            yield return new WaitForSeconds(0.06f);
        }
        // ユニット状態を移動停止にする
        _state = eState.moveEnd;
    }
Example #8
0
    // Use this for initialization
    /// <summary>
    /// Starts this instance.
    /// </summary>
    void Start()
    {
        Application.runInBackground = true;

        GetGameInitInfo();
        enemies = new ArrayList();
        spawners = new ArrayList();
        teamSpawners[0] = new ArrayList();
        teamSpawners[1] = new ArrayList();

        gameTime.setTime(0.0f);
        timer = 0;
        rounds.notParsed = true;
        resourceText.text = money.ToString();
        healthText.text = health.ToString();
        opponentHealth = health;
        opponentHealthText.text = opponentHealth.ToString();

        TMXLoader tmxl = new TMXLoader(Resources.Load<TextAsset>("map2"), this, teamId);
        tmxl.loadMeta();
        _mapWidth = tmxl.realMapWidth;
        _mapHeight = tmxl.realMapHeight;
        map = tmxl.tiles;
        tmxl.load();

        GameObject.FindWithTag("MainCamera").transform.position += tmxl.TransformVector;
        GameObject.FindWithTag("MainCamera").GetComponent<CameraAI>().SetMapSize(_mapWidth * 0.32f, _mapHeight * 0.32f);

        StartNetworking();
    }
Example #9
0
    IEnumerator Start()
    {
        // 地形データのロード.
        var tmx = new TMXLoader();

        tmx.Load("Levels/001");
        var layer = tmx.GetLayer(0);

        //layer.Dump();

        // タイルの配置.
        for (int j = 0; j < layer.Height; j++)
        {
            for (int i = 0; i < layer.Width; i++)
            {
                var v = layer.Get(i, j);
                var x = GetChipX(i);
                var y = GetChipY(j);
                Tile.Add(v, x, y);
            }
        }
        yield return(new WaitForSeconds(0.1f));

        var   pList  = new List <Point2>();
        Token player = null;

        // A-star実行.
        {
            // スタート地点.
            Point2 pStart = GetRandomPosition(layer);
            player = Util.CreateToken(GetChipX(pStart.x), GetChipY(pStart.y), "", "miku2", "Player");
            player.SortingLayer = "Chara";
            // ゴール.
            Point2 pGoal = GetRandomPosition(layer);
            var    goal  = Util.CreateToken(GetChipX(pGoal.x), GetChipY(pGoal.y), "", "gate1", "Goal");
            goal.SortingLayer = "Chara";
            // 斜め移動を許可
            var allowdiag = true;
            var mgr       = new ANodeMgr(layer, pGoal.x, pGoal.y, allowdiag);

            // スタート地点のノード取得
            // スタート地点なのでコストは「0」
            ANode node = mgr.OpenNode(pStart.x, pStart.y, 0, null);
            mgr.AddOpenList(node);

            // 試行回数。1000回超えたら強制中断
            int cnt = 0;
            while (cnt < 1000)
            {
                mgr.RemoveOpenList(node);
                // 周囲を開く
                mgr.OpenAround(node);
                // 最小スコアのノードを探す.
                node = mgr.SearchMinScoreNodeFromOpenList();
                if (node == null)
                {
                    // 袋小路なのでおしまい.
                    Debug.Log("Not found path.");
                    break;
                }
                if (node.X == pGoal.x && node.Y == pGoal.y)
                {
                    // ゴールにたどり着いた.
                    Debug.Log("Success.");
                    mgr.RemoveOpenList(node);
                    node.DumpRecursive();
                    // パスを取得する
                    node.GetPath(pList);
                    // 反転する
                    pList.Reverse();
                    break;
                }

                yield return(new WaitForSeconds(0.01f));
            }
        }

        _state = eState.Walk;
        // プレイヤーを移動させる.
        foreach (var p in pList)
        {
            var x = GetChipX(p.x);
            var y = GetChipY(p.y);
            player.X = x;
            player.Y = y;
            yield return(new WaitForSeconds(0.2f));
        }

        // おしまい
        _state = eState.End;
    }
    // Use this for initialization
    void Start()
    {
        enemies = new ArrayList();
        spawners = new ArrayList();
        gameTime.setTime(10.0f);
        timer = 0;
        rounds.notParsed = true;

        TMXLoader tmxl = new TMXLoader(Resources.Load<TextAsset>("coolmap2"), this);
        tmxl.loadMeta();
        _mapWidth = tmxl.mapWidth;
        _mapHeight = tmxl.mapHeight;
        map = tmxl.tiles;
        tmxl.load();
    }