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); } }
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; }
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); } }
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(); }
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); } }
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(); } }
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(); } }
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; } }