protected Vector3 Move(Layer2D layer, Direction dir) { //// 移動開始場所 //var start = new Vector3(ChipUtill.GetChipX(PosX), ChipUtill.GetChipY(PosY), 0.0f); var end2d = ChipUtil.MoveToPosition(GetChipPosition(), dir); var end = new Vector3(ChipUtil.GetWorldPosX(end2d.x), ChipUtil.GetWorldPosY(end2d.y), 0.0f); // 移動先まであたり判定 //boxCollider.enabled = false; //hit = Physics2D.Linecast(start, end, blockingLayer); //boxCollider.enabled = true; // 当たっていなかったら移動 var type = ChipUtil.GetExistsChip(layer, end2d); if ((type != ChipType.Wall) && (type != ChipType.None)) { var time = _moveTime; if ((dir & global::Direction.Dash) != 0) { time = 0.001f; } // 移動 if (m_moveTween == null) { m_moveTween = this.gameObject.transform .DOLocalMove(new Vector3(end.x, end.y, 0.0f) , time).OnComplete(() => { m_moveTween = null; }); } return(end); } return(end); }
public override void Generate(List <Layer2D> layer) { // データ取得 WIDTH = layer[(int)LayerType.Under].Width; HEIGHT = layer[(int)LayerType.Under].Height; // 初期化 // 2次元配列初期化 _layer = new Layer2D(WIDTH, HEIGHT); // 区画リスト作成 _divList = new List <DgDivision>(); // すべてを壁にする _layer.Fill((int)ChipType.Wall); // 最初の区画を作る CreateDivision(0, 0, WIDTH - 1, HEIGHT - 1); // 区画を分割する // 垂直 or 水平分割フラグの決定 for (int i = 0; i < 5; i++) { bool bVertical = (Random.Range(0, 2) == 0); SplitDivison(bVertical); } // 区画に部屋を作る CreateRoom(); // 部屋同士をつなぐ for (int i = 0; i < 2; i++) { ConnectRooms(); } // デバッグ出力 foreach (var div in _divList) { div.Dump(); } _layer.Dump(); // タイルを配置 var dangeon = new GameObject("Dangeon"); Sprite[] sprites = Resources.LoadAll <Sprite>(filePath + fileName); for (int j = 0; j < _layer.Height; j++) { for (int i = 0; i < _layer.Width; i++) { if (_layer.Get(i, j) == (int)ChipType.Wall) { int a = Random.Range(25, 28); string name = fileName + "_" + a.ToString(); // 壁生成 float x = ChipUtil.GetWorldPosX(i); float y = ChipUtil.GetWorldPosY(j); Util.CreateToken(x, y, filePath + fileName, name, "Wall") .transform.parent = dangeon.transform; } else if (_layer.Get(i, j) == (int)ChipType.Road) { int a = Random.Range(32, 39); string name = fileName + "_" + a.ToString(); // 壁生成 float x = ChipUtil.GetWorldPosX(i); float y = ChipUtil.GetWorldPosY(j); Util.CreateToken(x, y, filePath + fileName, name, "Road") .transform.parent = dangeon.transform; } } } layer[(int)LayerType.Under] = _layer; }