예제 #1
0
    //
    void FindPath()
    {
        if (null == m_target || !CanControl)
        {
            return;
        }
        AStarMapCell        start = m_astarMap.GetCell(m_data.Row, m_data.Column);
        AStarMapCell        end   = m_astarMap.GetCell(m_target.Row, m_target.Column);
        List <AStarMapCell> list  = AStar.CalculatePath(start, end, m_astarMap);

        if (list.Count > 0)
        {
            m_data.Move(list[0].Column - m_data.Column, list[0].Row - m_data.Row);
            AudioManager.Instance.PlayAudio("dog", true);
        }
        else
        {
            if (m_data.IsLookLeft)
            {
                m_data.Move(-1, 0);
            }
            else
            {
                m_data.Move(1, 0);
            }
            StartCoroutine(RetryFindPath(1));
        }
    }
예제 #2
0
 public bool SetCell(int row, int column, AStarMapCell mc)
 {
     if (row > this.row || column > this.column)
     {
         return(false);
     }
     cells [row * this.column + column] = mc;
     return(true);
 }
예제 #3
0
    public bool CanArrive(AStarMapCell target)
    {
        int x = target.Column - Column + 1;
        int y = target.Row - Row + 1;

        if (x >= 0 && x < 3 && y >= 0 && y < 3)
        {
            return(m_passArray [x, y]);
        }
        else
        {
            return(false);
        }
    }
예제 #4
0
    private static List <AStarMapCell> BacktrackPath(AStarMapCell end)
    {
        if (end == null)
        {
            return(new List <AStarMapCell> ());
        }
        List <AStarMapCell> list = new List <AStarMapCell> ();
        AStarMapCell        mc   = end;

        while (mc.GetParent() != null)
        {
            list.Insert(0, mc);
            mc = mc.GetParent();
        }
        return(list);
    }
예제 #5
0
    public AStarMapCell ToMapCell()
    {
        AStarMapCell mc = new AStarMapCell();

        mc.IsToLeft      = IsToLeft;
        mc.IsToRight     = IsToRight;
        mc.IsToUp        = IsToUp;
        mc.IsToDown      = IsToDown;
        mc.IsToLeftUp    = IsToLeftUp;
        mc.IsToLeftDown  = IsToLeftDown;
        mc.IsToRightUp   = IsToRightUp;
        mc.IsToRightDown = IsToRightDown;
        mc.Row           = Row;
        mc.Column        = Column;
        return(mc);
    }
예제 #6
0
    public AStarMap(int row, int column)
    {
        this.row    = row;
        this.column = column;
        cells       = new List <AStarMapCell>();

        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < column; j++)
            {
                AStarMapCell cell = new AStarMapCell();
                cell.Row    = i;
                cell.Column = j;
                cells.Add(cell);
            }
        }
    }
예제 #7
0
 private static void ResetMap()
 {
     for (int i = 0; i < m_map.Row; i++)
     {
         for (int j = 0; j < m_map.Column; j++)
         {
             AStarMapCell mc = m_map.GetCell(i, j);
             if (mc != null)
             {
                 mc.IsInOpenList  = false;
                 mc.IsInCloseList = false;
                 mc.SetParent(null);
                 mc.H = 0;
                 mc.G = 0;
             }
         }
     }
 }
예제 #8
0
    public int CalculateNeighborDist(AStarMapCell neighbor)
    {
        int disY = Mathf.Abs(neighbor.Row - Row);
        int disX = Mathf.Abs(neighbor.Column - Column);

        if (disX > 1 || disY > 1 || (disX == 0 && disY == 0))
        {
            return(0);
        }
        if (disX == 1 && disY == 1)
        {
            return(14);
        }
        else
        {
            return(10);
        }
    }
예제 #9
0
    public AStarMap(int row, int column, Vector2 cellSize, Vector2 startPos)
    {
        this.row    = row;
        this.column = column;
        cells       = new List <AStarMapCell>();

        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < column; j++)
            {
                AStarMapCell cell = new AStarMapCell();
                cell.Row    = i;
                cell.Column = j;
                cells.Add(cell);
            }
        }
        this.cellSize = cellSize;
        this.startPos = startPos;
    }
예제 #10
0
    public void FromMapCell(AStarMapCell mc)
    {
        IsToLeft      = mc.IsToLeft;
        IsToRight     = mc.IsToRight;
        IsToUp        = mc.IsToUp;
        IsToDown      = mc.IsToDown;
        IsToLeftUp    = mc.IsToLeftUp;
        IsToLeftDown  = mc.IsToLeftDown;
        IsToRightUp   = mc.IsToRightUp;
        IsToRightDown = mc.IsToRightDown;
        Row           = mc.Row;
        Column        = mc.Column;

        ShowLeft();
        ShowLeftDown();
        ShowLeftUp();
        ShowRight();
        ShowRightDown();
        ShowRightUp();
        ShowUp();
        ShowDown();
    }
    static void SetAStarMapCell_First(MapData map, MapCellData cell, ref AStarMap astarMap)
    {
        AStarMapCell astarMapCell = astarMap.GetCell(cell.row, cell.col);

        astarMapCell.IsToLeftUp    = false;
        astarMapCell.IsToLeftDown  = false;
        astarMapCell.IsToRightUp   = false;
        astarMapCell.IsToRightDown = false;

        //check up
        if (cell.row + 1 < map.row)
        {
            MapCellData  upCell      = map.cells [(cell.row + 1) * map.column + cell.col];
            AStarMapCell upAStarCell = astarMap.GetCell(cell.row + 1, cell.col);
            switch ((CELL_TYPE)cell.cellType)
            {
            case CELL_TYPE.WALL:
                upAStarCell.IsToDown = false;
                astarMapCell.IsToUp  = false;
                break;

            case CELL_TYPE.STONE:
                upAStarCell.IsToDown = false;
                astarMapCell.IsToUp  = false;
                break;

            case CELL_TYPE.LADDER:
                switch ((CELL_TYPE)upCell.cellType)
                {
                case CELL_TYPE.WALL:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = false;
                    break;

                case CELL_TYPE.STONE:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = false;
                    break;

                case CELL_TYPE.LADDER:
                    upAStarCell.IsToDown = true;
                    astarMapCell.IsToUp  = true;
                    break;

                case CELL_TYPE.POLE:
                    upAStarCell.IsToDown = true;
                    astarMapCell.IsToUp  = true;
                    break;

                case CELL_TYPE.NONE:
                    upAStarCell.IsToDown = true;
                    astarMapCell.IsToUp  = true;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    upAStarCell.IsToDown = true;
                    astarMapCell.IsToUp  = true;
                    break;
                }
                break;

            case CELL_TYPE.POLE:
                switch ((CELL_TYPE)upCell.cellType)
                {
                case CELL_TYPE.WALL:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = false;
                    break;

                case CELL_TYPE.STONE:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = false;
                    break;

                case CELL_TYPE.LADDER:
                    upAStarCell.IsToDown = true;
                    astarMapCell.IsToUp  = true;
                    break;

                case CELL_TYPE.POLE:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = false;
                    break;

                case CELL_TYPE.NONE:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = true;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = true;
                    break;
                }
                break;

            case CELL_TYPE.NONE:
                switch ((CELL_TYPE)upCell.cellType)
                {
                case CELL_TYPE.WALL:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = false;
                    break;

                case CELL_TYPE.STONE:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = false;
                    break;

                case CELL_TYPE.LADDER:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = true;
                    break;

                case CELL_TYPE.POLE:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = true;
                    break;

                case CELL_TYPE.NONE:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = true;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = true;
                    break;
                }
                break;

            default:            //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                switch ((CELL_TYPE)upCell.cellType)
                {
                case CELL_TYPE.WALL:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = false;
                    break;

                case CELL_TYPE.STONE:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = false;
                    break;

                case CELL_TYPE.LADDER:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = true;
                    break;

                case CELL_TYPE.POLE:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = true;
                    break;

                case CELL_TYPE.NONE:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = true;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    upAStarCell.IsToDown = false;
                    astarMapCell.IsToUp  = true;
                    break;
                }
                break;
            }
        }
        //down
        if (cell.row - 1 >= 0)
        {
            MapCellData  downCell      = map.cells [(cell.row - 1) * map.column + cell.col];
            AStarMapCell downAStarCell = astarMap.GetCell(cell.row - 1, cell.col);
            switch ((CELL_TYPE)cell.cellType)
            {
            case CELL_TYPE.WALL:
                astarMapCell.IsToDown = false;
                downAStarCell.IsToUp  = false;
                break;

            case CELL_TYPE.STONE:
                astarMapCell.IsToDown = false;
                downAStarCell.IsToUp  = false;
                break;

            case CELL_TYPE.LADDER:
                switch ((CELL_TYPE)downCell.cellType)
                {
                case CELL_TYPE.WALL:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = false;
                    break;

                case CELL_TYPE.STONE:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = false;
                    break;

                case CELL_TYPE.LADDER:
                    astarMapCell.IsToDown = true;
                    downAStarCell.IsToUp  = true;
                    break;

                case CELL_TYPE.POLE:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = true;
                    break;

                case CELL_TYPE.NONE:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = true;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = true;
                    break;
                }
                break;

            case CELL_TYPE.POLE:
                switch ((CELL_TYPE)downCell.cellType)
                {
                case CELL_TYPE.WALL:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = false;
                    break;

                case CELL_TYPE.STONE:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = false;
                    break;

                case CELL_TYPE.LADDER:
                    astarMapCell.IsToDown = true;
                    downAStarCell.IsToUp  = true;
                    break;

                case CELL_TYPE.POLE:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = true;
                    break;

                case CELL_TYPE.NONE:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = true;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = true;
                    break;
                }
                break;

            case CELL_TYPE.NONE:
                switch ((CELL_TYPE)downCell.cellType)
                {
                case CELL_TYPE.WALL:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = false;
                    break;

                case CELL_TYPE.STONE:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = false;
                    break;

                case CELL_TYPE.LADDER:
                    astarMapCell.IsToDown = true;
                    downAStarCell.IsToUp  = true;
                    break;

                case CELL_TYPE.POLE:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = true;
                    break;

                case CELL_TYPE.NONE:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = true;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = true;
                    break;
                }
                break;

            default:            //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                switch ((CELL_TYPE)downCell.cellType)
                {
                case CELL_TYPE.WALL:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = false;
                    break;

                case CELL_TYPE.STONE:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = false;
                    break;

                case CELL_TYPE.LADDER:
                    astarMapCell.IsToDown = true;
                    downAStarCell.IsToUp  = true;
                    break;

                case CELL_TYPE.POLE:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = true;
                    break;

                case CELL_TYPE.NONE:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = true;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    astarMapCell.IsToDown = false;
                    downAStarCell.IsToUp  = true;
                    break;
                }
                break;
            }
        }
        //check left
        if (cell.col - 1 >= 0)
        {
            MapCellData  leftCell      = map.cells [(cell.row) * map.column + cell.col - 1];
            AStarMapCell leftAStarCell = astarMap.GetCell(cell.row, cell.col - 1);
            switch ((CELL_TYPE)cell.cellType)
            {
            case CELL_TYPE.WALL:
                leftAStarCell.IsToRight = false;
                astarMapCell.IsToLeft   = false;
                break;

            case CELL_TYPE.STONE:
                leftAStarCell.IsToRight = false;
                astarMapCell.IsToLeft   = false;
                break;

            case CELL_TYPE.LADDER:
                switch ((CELL_TYPE)leftCell.cellType)
                {
                case CELL_TYPE.WALL:
                    leftAStarCell.IsToRight = false;
                    astarMapCell.IsToLeft   = false;
                    break;

                case CELL_TYPE.STONE:
                    leftAStarCell.IsToRight = false;
                    astarMapCell.IsToLeft   = false;
                    break;

                case CELL_TYPE.LADDER:
                    leftAStarCell.IsToRight = true;
                    astarMapCell.IsToLeft   = true;
                    break;

                case CELL_TYPE.POLE:
                    leftAStarCell.IsToRight = true;
                    astarMapCell.IsToLeft   = true;
                    break;

                case CELL_TYPE.NONE:
                    leftAStarCell.IsToRight = true;
                    astarMapCell.IsToLeft   = false;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    leftAStarCell.IsToRight = true;
                    astarMapCell.IsToLeft   = false;
                    break;
                }
                break;

            case CELL_TYPE.POLE:
                switch ((CELL_TYPE)leftCell.cellType)
                {
                case CELL_TYPE.WALL:
                    leftAStarCell.IsToRight = false;
                    astarMapCell.IsToLeft   = false;
                    break;

                case CELL_TYPE.STONE:
                    leftAStarCell.IsToRight = false;
                    astarMapCell.IsToLeft   = false;
                    break;

                case CELL_TYPE.LADDER:
                    leftAStarCell.IsToRight = true;
                    astarMapCell.IsToLeft   = true;
                    break;

                case CELL_TYPE.POLE:
                    leftAStarCell.IsToRight = true;
                    astarMapCell.IsToLeft   = true;
                    break;

                case CELL_TYPE.NONE:
                    leftAStarCell.IsToRight = true;
                    astarMapCell.IsToLeft   = false;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    leftAStarCell.IsToRight = true;
                    astarMapCell.IsToLeft   = false;
                    break;
                }
                break;

            default:            //case CELL_TYPE.NONE || CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                switch ((CELL_TYPE)leftCell.cellType)
                {
                case CELL_TYPE.WALL:
                    leftAStarCell.IsToRight = false;
                    astarMapCell.IsToLeft   = false;
                    break;

                case CELL_TYPE.STONE:
                    leftAStarCell.IsToRight = false;
                    astarMapCell.IsToLeft   = false;
                    break;

                case CELL_TYPE.LADDER:
                    leftAStarCell.IsToRight = false;
                    astarMapCell.IsToLeft   = true;
                    break;

                case CELL_TYPE.POLE:
                    leftAStarCell.IsToRight = false;
                    astarMapCell.IsToLeft   = true;
                    break;

                case CELL_TYPE.NONE:
                    leftAStarCell.IsToRight = false;
                    astarMapCell.IsToLeft   = false;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    leftAStarCell.IsToRight = false;
                    astarMapCell.IsToLeft   = false;
                    break;
                }
                break;
            }
        }
        //check right
        if (cell.col + 1 < map.column)
        {
            MapCellData  rightCell      = map.cells [(cell.row) * map.column + cell.col + 1];
            AStarMapCell rightAStarCell = astarMap.GetCell(cell.row, cell.col + 1);
            switch ((CELL_TYPE)cell.cellType)
            {
            case CELL_TYPE.WALL:
                astarMapCell.IsToRight  = false;
                rightAStarCell.IsToLeft = false;
                break;

            case CELL_TYPE.STONE:
                astarMapCell.IsToRight  = false;
                rightAStarCell.IsToLeft = false;
                break;

            case CELL_TYPE.LADDER:
                switch ((CELL_TYPE)rightCell.cellType)
                {
                case CELL_TYPE.WALL:
                    astarMapCell.IsToRight  = false;
                    rightAStarCell.IsToLeft = false;
                    break;

                case CELL_TYPE.STONE:
                    astarMapCell.IsToRight  = false;
                    rightAStarCell.IsToLeft = false;
                    break;

                case CELL_TYPE.LADDER:
                    astarMapCell.IsToRight  = true;
                    rightAStarCell.IsToLeft = true;
                    break;

                case CELL_TYPE.POLE:
                    astarMapCell.IsToRight  = true;
                    rightAStarCell.IsToLeft = true;
                    break;

                case CELL_TYPE.NONE:
                    astarMapCell.IsToRight  = false;
                    rightAStarCell.IsToLeft = true;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    astarMapCell.IsToRight  = false;
                    rightAStarCell.IsToLeft = true;
                    break;
                }
                break;

            case CELL_TYPE.POLE:
                switch ((CELL_TYPE)rightCell.cellType)
                {
                case CELL_TYPE.WALL:
                    astarMapCell.IsToRight  = false;
                    rightAStarCell.IsToLeft = false;
                    break;

                case CELL_TYPE.STONE:
                    astarMapCell.IsToRight  = false;
                    rightAStarCell.IsToLeft = false;
                    break;

                case CELL_TYPE.LADDER:
                    astarMapCell.IsToRight  = true;
                    rightAStarCell.IsToLeft = true;
                    break;

                case CELL_TYPE.POLE:
                    astarMapCell.IsToRight  = true;
                    rightAStarCell.IsToLeft = true;
                    break;

                case CELL_TYPE.NONE:
                    astarMapCell.IsToRight  = false;
                    rightAStarCell.IsToLeft = true;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    astarMapCell.IsToRight  = false;
                    rightAStarCell.IsToLeft = true;
                    break;
                }
                break;

            default:            //case CELL_TYPE.NONE || CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                switch ((CELL_TYPE)rightCell.cellType)
                {
                case CELL_TYPE.WALL:
                    astarMapCell.IsToRight  = false;
                    rightAStarCell.IsToLeft = false;
                    break;

                case CELL_TYPE.STONE:
                    astarMapCell.IsToRight  = false;
                    rightAStarCell.IsToLeft = false;
                    break;

                case CELL_TYPE.LADDER:
                    astarMapCell.IsToRight  = true;
                    rightAStarCell.IsToLeft = false;
                    break;

                case CELL_TYPE.POLE:
                    astarMapCell.IsToRight  = true;
                    rightAStarCell.IsToLeft = false;
                    break;

                case CELL_TYPE.NONE:
                    astarMapCell.IsToRight  = false;
                    rightAStarCell.IsToLeft = false;
                    break;

                default:                //case CELL_TYPE.BRA || CELL_TYPE.UNDERPANT || CELL_TYPE.SOCKS:
                    astarMapCell.IsToRight  = false;
                    rightAStarCell.IsToLeft = false;
                    break;
                }
                break;
            }
        }
    }
예제 #12
0
    public static List <AStarMapCell> CalculatePath(AStarMapCell start, AStarMapCell end, AStarMap map)
    {
        m_openList.Clear();
        m_closeList.Clear();
        m_map = map;
        ResetMap();

        start.G = 0;
        start.CalculateH(end);

        m_openList.Add(start);
        start.IsInOpenList = true;

        while (true)
        {
            int          nearestIndex = FindNearestCellInOpenList();
            AStarMapCell cur;
            if (nearestIndex >= 0)
            {
                cur = m_openList [nearestIndex];
                if (cur.Equals(end))
                {
                    return(BacktrackPath(cur));
                }
            }
            else
            {
                return(new List <AStarMapCell> ());
            }

            for (int i = cur.Row - 1; i <= cur.Row + 1; i++)
            {
                for (int j = cur.Column - 1; j <= cur.Column + 1; j++)
                {
                    if (i >= 0 && i < m_map.Row && j >= 0 && j < m_map.Column)
                    {
                        AStarMapCell mc = m_map.GetCell(i, j);

                        if (mc != null && !mc.IsInCloseList && mc.CanArrive(cur))
                        {
                            if (mc.IsInOpenList)
                            {
                                int dist = cur.CalculateNeighborDist(mc);
                                if (cur.G + dist < mc.G)
                                {
                                    mc.G = cur.G + dist;
                                    mc.SetParent(cur);
                                }
                            }
                            else
                            {
                                mc.SetParent(cur);
                                mc.CalculateH(end);
                                mc.CalculateG(cur);
                                mc.IsInOpenList = true;
                                m_openList.Add(mc);
                            }
                        }
                    }
                }
            }
            m_openList.RemoveAt(nearestIndex);
            cur.IsInOpenList = false;
            m_closeList.Add(cur);
            cur.IsInCloseList = true;
        }
        return(new List <AStarMapCell> ());
    }
예제 #13
0
 public void CalculateG(AStarMapCell neighbor)
 {
     G = neighbor.G + CalculateNeighborDist(neighbor);
 }
예제 #14
0
    public void CalculateH(AStarMapCell end)
    {
        int dis = Mathf.Abs(end.Row - Row) + Mathf.Abs(end.Column - Column);

        H = dis * 10;
    }
예제 #15
0
 public void SetParent(AStarMapCell mc)
 {
     m_parent = mc;
 }