コード例 #1
0
    private void Start()
    {
        selfTransform = transform;
        maze          = GetComponent <BaseMaze>();
        mazeHeight    = maze.mazeHeight;
        mazeWidth     = maze.mazeWidth;

        SetCenterPoint();
        //centerX = mazeHeight / 2;
        //centerY = mazeWidth / 2;
        //StartCoroutine(BuildColumnAsync());
    }
コード例 #2
0
    public void Start_CreatMaze(int Map_width, int Map_height)
    {
        width  = Map_width;
        height = Map_height;

        maze = new BaseMaze();

        //將演算法指定為BacktrackingAlgorithm
        algorithm = new BacktrackingAlgorithm(this);

        //初始創建迷宮
        GenerateMaze();
    }
コード例 #3
0
    public BaseCell(BaseCell previousCell, Direction direction, MazeGenerator mazeGenerator)
    {
        m_center = previousCell.Center + MazeUtils.DirectionToVector2(direction);

        m_root      = GameObject.Instantiate(Resources.Load(PREFAB_NAME) as GameObject);
        m_root.name = string.Format("Cell {0},{1}", m_center.x, m_center.y);
        m_root.transform.position = new Vector3(m_center.x, m_center.y, -0.1f);

        m_maze = mazeGenerator.maze;
        m_maze.SetCell((int)m_center.x, (int)m_center.y, this);

        SetupWalls(direction);
        SetupNeighbours();
    }
コード例 #4
0
    public BaseCell(int w, int h, MazeGenerator mazeGenerator)
    {
        m_center = new Vector2(w, h);

        m_root      = GameObject.Instantiate(Resources.Load(PREFAB_NAME) as GameObject);
        m_root.name = string.Format("Cell {0},{1}", m_center.x, m_center.y);
        m_root.transform.position = new Vector3(m_center.x, m_center.y, -0.1f);

        m_maze = mazeGenerator.maze;
        m_maze.SetCell(w, h, this);

        SetupWalls(Direction.None);
        SetupNeighbours();
    }
コード例 #5
0
    //初始 BaseCell 只會執行一次
    public BaseCell(int w, int h, MazeGenerator mazeGenerator)
    {
        //設定 BaseCell 位置 初始預設為 [0, 0]
        m_x = w;
        m_y = h;

        //將 m_maze 的資料指向 MazeGenerator 的 BaseMaze
        m_maze = mazeGenerator.maze;

        //向 m_maze 傳當前 BaseCell 的資料
        m_maze.SetCell(w, h, this);

        //設定牆壁 初始預設為空
        SetupWalls(0);

        //設定牆壁狀態
        SetupNeighbours();
    }
コード例 #6
0
    //新增 BaseCell
    public BaseCell(BaseCell previousCell, int direction, MazeGenerator mazeGenerator)
    {
        //取得前一個 BaseCell 的位置
        m_x = previousCell.m_x;
        m_y = previousCell.m_y;

        //判斷方向並更改當前 BaseCell 的位置
        switch (direction)
        {
        case 1:
            m_y++;
            break;

        case 2:
            m_y--;
            break;

        case 3:
            m_x--;
            break;

        case 4:
            m_x++;
            break;
        }

        //將 m_maze 的資料指向 MazeGenerator 的 BaseMaze
        m_maze = mazeGenerator.maze;

        //向 m_maze 傳當前 BaseCell 的資料
        m_maze.SetCell(m_x, m_y, this);

        //設定牆壁給予參數 方向
        SetupWalls(direction);

        //設定牆壁狀態
        SetupNeighbours();
    }