Exemplo n.º 1
0
    private bool MineCheck(AntDir antDir)
    {
        TileManager.Tile tile = TileManager.Tile.공백;
        switch (antDir)
        {
        case AntDir.Up:
        default:
            if (!TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x, location.y + 1)))
            {
                // tile = TileManager.instance.GetTile(new Vector2Int(location.x, location.y + 1));
                if (TileManager.instance.DigCheck(new Vector2Int(location.x, location.y + 1)))
                {
                    nextLocation = location;
                    nextLocation.y++;
                    return(true);
                }
            }
            return(false);

        case AntDir.Down:
            if (!TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x, location.y - 1)))
            {
                //tile = TileManager.instance.GetTile(new Vector2Int(location.x, location.y - 1));
                if (TileManager.instance.DigCheck(new Vector2Int(location.x, location.y - 1)))
                {
                    nextLocation = location;
                    nextLocation.y--;
                    return(true);
                }
            }
            return(false);

        case AntDir.Right:
            if (!TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x + 1, location.y)))
            {
                // tile = TileManager.instance.GetTile(new Vector2Int(location.x + 1, location.y));
                if (TileManager.instance.DigCheck(new Vector2Int(location.x + 1, location.y)))
                {
                    nextLocation = location;
                    nextLocation.x++;
                    return(true);
                }
            }
            return(false);

        case AntDir.Left:
            if (!TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x - 1, location.y)))
            {
                // tile = TileManager.instance.GetTile(new Vector2Int(location.x - 1, location.y));
                if (TileManager.instance.DigCheck(new Vector2Int(location.x - 1, location.y)))
                {
                    nextLocation = location;
                    nextLocation.x--;
                    return(true);
                }
            }
            return(false);
        }
    }
Exemplo n.º 2
0
 public override void SetAnt(Vector2Int enterAnt, AntDir antDir)
 {
     location           = enterAnt;
     locationPos        = TileManager.instance.GridPos(location);
     this.antDir        = antDir;
     transform.position = locationPos;
     nextLocationPos    = locationPos;
     SetAni(AntAni.Walk);
     FirstTarget();
     actionTime = 0f;
 }
Exemplo n.º 3
0
    private Vector3 GetAntDirToVector(AntDir antDir)
    {
        switch (antDir)
        {
        case AntDir.Up:
        default:
            return(Vector3.up);

        case AntDir.Down:
            return(Vector3.down);

        case AntDir.Right:
            return(Vector3.right);

        case AntDir.Left:
            return(Vector3.left);
        }
    }
Exemplo n.º 4
0
    protected virtual void CheckNextBlock()
    {
        if (antDirList.Count >= 4)
        {
            if (Checker(antDirList[0]))
            {
                this.antDir = antDirList[0];
            }
            else if (Checker(antDirList[1]))
            {
                this.antDir = antDirList[1];
            }
            else if (Checker(antDirList[2]))
            {
                this.antDir = antDirList[2];
            }
            else
            {
                this.antDir = antDirList[3];
            }
        }
        else
        {
            if (Checker(antDirList[0]))
            {
                this.antDir = antDirList[0];
            }
            else if (Checker(antDirList[1]))
            {
                this.antDir = antDirList[1];
            }
            else
            {
                this.antDir = antDirList[2];
            }
        }

        SetAniDir();
        SetNextPos();
    }
Exemplo n.º 5
0
    protected bool Checker(AntDir antDir)
    {
        switch (antDir)
        {
        case AntDir.Up:
        default:
            if (TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x, location.y + 1)))
            {
                //Debug.Log(TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x, location.y + 1)) + " 위");
                return(TileMoveOnCheck(TileManager.instance.TileCheck(new Vector2Int(location.x, location.y + 1))));
            }
            return(false);

        case AntDir.Down:
            if (TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x, location.y - 1)))
            {
                //Debug.Log(TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x, location.y - 1)) + " 아래");
                return(TileMoveOnCheck(TileManager.instance.TileCheck(new Vector2Int(location.x, location.y - 1))));
            }
            return(false);

        case AntDir.Right:
            if (TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x + 1, location.y)))
            {
                //Debug.Log(TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x + 1, location.y)) + " 오른쪽");
                return(TileMoveOnCheck(TileManager.instance.TileCheck(new Vector2Int(location.x + 1, location.y))));
            }
            return(false);

        case AntDir.Left:
            if (TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x - 1, location.y)))
            {
                //Debug.Log(TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x - 1, location.y)) + " 왼쪽");
                return(TileMoveOnCheck(TileManager.instance.TileCheck(new Vector2Int(location.x - 1, location.y))));
            }
            return(false);
        }
    }
Exemplo n.º 6
0
    private void FirstTarget()
    {
        TileManager.Tile tile     = TileManager.Tile.공백;
        AntDir           backDir  = AntDir.Up;
        bool             dirtWall = false;

        switch (antDir)
        {
        case AntDir.Up:
        default:
            if (transform.position.y >= nextLocationPos.y)
            {
                tile     = TileManager.instance.GetTile(new Vector2Int(location.x, location.y + 1));
                backDir  = AntDir.Down;
                dirtWall = TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x, location.y + 1));
            }
            break;

        case AntDir.Down:
            if (transform.position.y <= nextLocationPos.y)
            {
                tile     = TileManager.instance.GetTile(new Vector2Int(location.x, location.y - 1));
                backDir  = AntDir.Up;
                dirtWall = TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x, location.y - 1));
            }
            break;

        case AntDir.Right:
            if (transform.position.x >= nextLocationPos.x)
            {
                tile     = TileManager.instance.GetTile(new Vector2Int(location.x + 1, location.y));
                backDir  = AntDir.Left;
                dirtWall = TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x + 1, location.y));
            }
            break;

        case AntDir.Left:
            if (transform.position.x <= nextLocationPos.x)
            {
                tile     = TileManager.instance.GetTile(new Vector2Int(location.x - 1, location.y));
                backDir  = AntDir.Right;
                dirtWall = TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x - 1, location.y));
            }
            break;
        }
        transform.position = locationPos;
        if (dirtWall)
        {
            if (tile == TileManager.Tile.응가)
            {
                antDir = backDir;
                SetNextPos();
            }
            else
            {
                SetAntDirList();
                CheckNextBlock();
            }
        }
        else
        {
            SetAntDirList();
            CheckNextBlock();
        }
    }
Exemplo n.º 7
0
    protected override void LocationChange()
    {
        TileManager.Tile tile     = TileManager.Tile.공백;
        AntDir           backDir  = AntDir.Up;
        bool             dirtWall = false;

        switch (antDir)
        {
        case AntDir.Up:
        default:
            if (transform.position.y >= nextLocationPos.y)
            {
                location.y++;
                locationPos.y++;
                tile     = TileManager.instance.GetTile(new Vector2Int(location.x, location.y + 1));
                backDir  = AntDir.Down;
                dirtWall = TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x, location.y + 1));
            }
            break;

        case AntDir.Down:
            if (transform.position.y <= nextLocationPos.y)
            {
                location.y--;
                locationPos.y--;
                tile     = TileManager.instance.GetTile(new Vector2Int(location.x, location.y - 1));
                backDir  = AntDir.Up;
                dirtWall = TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x, location.y - 1));
            }
            break;

        case AntDir.Right:
            if (transform.position.x >= nextLocationPos.x)
            {
                location.x++;
                locationPos.x++;
                tile     = TileManager.instance.GetTile(new Vector2Int(location.x + 1, location.y));
                backDir  = AntDir.Left;
                dirtWall = TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x + 1, location.y));
            }
            break;

        case AntDir.Left:
            if (transform.position.x <= nextLocationPos.x)
            {
                location.x--;
                locationPos.x--;
                tile     = TileManager.instance.GetTile(new Vector2Int(location.x - 1, location.y));
                backDir  = AntDir.Right;
                dirtWall = TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x - 1, location.y));
            }
            break;
        }
        transform.position = locationPos;

        Vector2Int honeyPos = TileManager.instance.GetHoneyPos(location);

        //Debug.Log("꿀 위치 " + honeyPos);

        if (dirtWall)
        {
            if (tile == TileManager.Tile.응가)
            {
                antDir = backDir;
                SetNextPos();
            }
            else
            {
                if (honeyPos.x <= -100f)
                {
                    SetAntDirList();
                }
                else
                {
                    SetHoneyAntDirList(honeyPos);
                }
                CheckNextBlock();
            }
        }
        else
        {
            if (honeyPos.x <= -100f)
            {
                SetAntDirList();
            }
            else
            {
                SetHoneyAntDirList(honeyPos);
            }
            CheckNextBlock();
        }
    }
Exemplo n.º 8
0
    protected virtual void LocationChange()
    {
        TileManager.Tile tile = TileManager.Tile.공백;
        switch (antDir)
        {
        case AntDir.Up:
        default:
            if (transform.position.y >= nextLocationPos.y)
            {
                location.y++;
                locationPos.y++;

                //Debug.Log("Up " + location + new Vector2Int(location.x, location.y + 1));

                if (TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x, location.y + 1)))
                {
                    tile = TileManager.instance.TileCheck(new Vector2Int(location.x, location.y + 1));
                    //Debug.Log(tile);
                    if (tile == TileManager.Tile.응가)
                    {
                        transform.position = locationPos;
                        antDir             = AntDir.Down;
                        SetAniDir();
                        SetNextPos();
                    }
                    else
                    {
                        //Debug.Log("UP  커브");
                        transform.position = locationPos;
                        SetAntDirList();
                        CheckNextBlock();
                    }
                }
                else
                {
                    transform.position = locationPos;
                    SetAntDirList();
                    CheckNextBlock();
                }
            }
            break;

        case AntDir.Down:
            if (transform.position.y <= nextLocationPos.y)
            {
                location.y--;
                locationPos.y--;
                //Debug.Log("Down " + location + new Vector2Int(location.x, location.y - 1));

                if (TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x, location.y - 1)))
                {
                    tile = TileManager.instance.TileCheck(new Vector2Int(location.x, location.y - 1));

                    if (tile == TileManager.Tile.응가)
                    {
                        transform.position = locationPos;
                        antDir             = AntDir.Up;
                        SetAniDir();
                        SetNextPos();
                    }
                    else
                    {
                        //Debug.Log("Down  커브");
                        transform.position = locationPos;
                        SetAntDirList();
                        CheckNextBlock();
                    }
                }
                else
                {
                    transform.position = locationPos;
                    SetAntDirList();
                    CheckNextBlock();
                }
            }
            break;

        case AntDir.Right:
            if (transform.position.x >= nextLocationPos.x)
            {
                location.x++;
                locationPos.x++;
                //Debug.Log("Right " + location + new Vector2Int(location.x + 1, location.y));
                if (TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x + 1, location.y)))
                {
                    tile = TileManager.instance.TileCheck(new Vector2Int(location.x + 1, location.y));

                    if (tile == TileManager.Tile.응가)
                    {
                        transform.position = locationPos;
                        antDir             = AntDir.Left;
                        SetAniDir();
                        SetNextPos();
                    }
                    else
                    {
                        //Debug.Log("Right  커브");
                        transform.position = locationPos;
                        SetAntDirList();
                        CheckNextBlock();
                    }
                }
                else
                {
                    transform.position = locationPos;
                    SetAntDirList();
                    CheckNextBlock();
                }
            }
            break;

        case AntDir.Left:
            if (transform.position.x <= nextLocationPos.x)
            {
                location.x--;
                locationPos.x--;
                //Debug.Log("Left " + location + new Vector2Int(location.x - 1, location.y) +
                //TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x - 1, location.y)));
                if (TileManager.instance.DirtWallCheck(location, new Vector2Int(location.x - 1, location.y)))
                {
                    //Debug.Log("여기 체크");
                    tile = TileManager.instance.TileCheck(new Vector2Int(location.x - 1, location.y));
                    //Debug.Log(tile);
                    if (tile == TileManager.Tile.응가)
                    {
                        transform.position = locationPos;
                        antDir             = AntDir.Right;
                        SetAniDir();
                        SetNextPos();
                    }
                    else
                    {
                        //Debug.Log("LEFT  커브");
                        transform.position = locationPos;
                        SetAntDirList();
                        CheckNextBlock();
                    }
                }
                else
                {
                    transform.position = locationPos;
                    SetAntDirList();
                    CheckNextBlock();
                }
            }
            break;
        }
    }