private void CheckCurrentSearchAroundTile() { //上下左右 DoCheckTile(mCurrentNode.x + 1, mCurrentNode.y); DoCheckTile(mCurrentNode.x - 1, mCurrentNode.y); DoCheckTile(mCurrentNode.x, mCurrentNode.y + 1); DoCheckTile(mCurrentNode.x, mCurrentNode.y - 1); if (mHolder.GetTileSerachType() == CEPathFindBasic.TILE_SERACH_TYPE.EIGHT_DIRECTION) { //右上 DoCheckTile(mCurrentNode.x + 1, mCurrentNode.y + 1); //右下 DoCheckTile(mCurrentNode.x + 1, mCurrentNode.y - 1); //左下 DoCheckTile(mCurrentNode.x - 1, mCurrentNode.y - 1); //左上 DoCheckTile(mCurrentNode.x - 1, mCurrentNode.y + 1); } else if (mHolder.GetTileSerachType() == CEPathFindBasic.TILE_SERACH_TYPE.EIGHT_DIRECTION_FIX_CORNER) { var upTileWalkable = mHolder.isTileWalkable(mCurrentNode.x, mCurrentNode.y + 1); var downTileWalkable = mHolder.isTileWalkable(mCurrentNode.x, mCurrentNode.y - 1); var rightTileWalkable = mHolder.isTileWalkable(mCurrentNode.x + 1, mCurrentNode.y); var leftTileWalkable = mHolder.isTileWalkable(mCurrentNode.x - 1, mCurrentNode.y); if (upTileWalkable && rightTileWalkable) { //右上 DoCheckTile(mCurrentNode.x + 1, mCurrentNode.y + 1); } if (downTileWalkable && rightTileWalkable) { //右下 DoCheckTile(mCurrentNode.x + 1, mCurrentNode.y - 1); } if (downTileWalkable && leftTileWalkable) { //左下 DoCheckTile(mCurrentNode.x - 1, mCurrentNode.y - 1); } if (upTileWalkable && leftTileWalkable) { //左上 DoCheckTile(mCurrentNode.x - 1, mCurrentNode.y + 1); } } }
public void Reset(CEPathFindBasic _holder, int _startTileX, int _startTileY, int _endTileX, int _endTileY) { mHolder = _holder; mStarNode = GetNewNode(); mStarNode.x = _startTileX; mStarNode.y = _startTileY; mStarNode.isWalkable = mHolder.isTileWalkable(mStarNode.x, mStarNode.y); mEndNode = GetNewNode(); mEndNode.x = _endTileX; mEndNode.y = _endTileY; mEndNode.isWalkable = mHolder.isTileWalkable(mEndNode.x, mEndNode.y); mCurrentNode = mStarNode; mCurrentNode.isWalkable = mHolder.isTileWalkable(mCurrentNode.x, mCurrentNode.y); }