protected override Vector3 AttemptMove(Layer2D layer, Direction dir) { var move = base.AttemptMove(layer, dir); // スタミナを減らす _stamina--; InGameManager.GetInstance().staminaText.text = "Stamina: " + Stamina; CheckIfGameOver(); // ゴールがある場合リロード if (InGameManager.GetInstance().GoalCheck(ChipUtil.GetChipPos(new Vector2(move.x, move.y)))) { // 遅延してリスタート Restart(); // プレイヤーを一度無効 enabled = false; } // プレイヤーのターンを終了する InGameManager.GetInstance().playersTurn = false; return(move); }
public void MoveEnemy(Layer2D layer) { int xDir = 0; int yDir = 0; if (Mathf.Abs(target.position.x - transform.position.x) < float.Epsilon) { yDir = target.position.y > transform.position.y ? 1 : -1; } else { xDir = target.position.x > transform.position.x ? 1 : -1; } var dir = ChipUtil.CreateDirection(new Vector2Int(xDir, yDir)); AttemptMove(layer, dir); }
private void Update() { // 自分のターンじゃないとき処理しない if (!InGameManager.GetInstance().playersTurn) { return; } int horizontal = 0; // 水平移動方向 int vertical = 0; // 垂直移動方向 // 水平移動方向設定 horizontal = (int)(Input.GetAxisRaw("Horizontal")); // 垂直移動方向取得 vertical = (int)(Input.GetAxisRaw("Vertical")); // 移動があるか確認 if (horizontal != 0 || vertical != 0) { var dir = ChipUtil.CreateDirection(new Vector2Int(horizontal, vertical)); var list = InGameManager.GetInstance().LayerList; AttemptMove(list[(int)LayerType.Under], dir); } }
public override void Generate(List <Layer2D> layer) { // データ取得 WIDTH = layer[(int)LayerType.Under].Width; HEIGHT = layer[(int)LayerType.Under].Height; // 生成可能位置リストを取得 var popList = new List <KeyValuePair <int, int> >(); popList = GetGeneratedList(layer[(int)LayerType.Under]); // 生成可能位置にプレイヤーを作成 int rand = Random.Range(0, popList.Count - 1); var token = Util.CreateToken(0.0f, 0.0f, "Sprites\\Tile\\goal", "", "Goal"); token.Renderer.sortingOrder = 1; var x = popList[rand].Key; var y = popList[rand].Value; layer[(int)LayerType.Top].Set(x, y, (int)ChipType.Goal); token.SetPosition(ChipUtil.GetChipPos(new Vector2(x, y))); }
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; }
public Vector2Int GetChipPosition() { var cPos = ChipUtil.GetChipPos(transform.position); return(cPos); }
public void SetChipPosition(Vector2Int pos) { var wPos = ChipUtil.GetWorldPos(pos); base.SetPosition(wPos.x, wPos.y); }