Exemple #1
0
 /// <summary>
 /// ブロックを並べる
 /// 同時に生成されたBlockModelをListに格納する
 /// </summary>
 /// <param name="xLength"></param>
 /// <param name="yLength"></param>
 private void InstantiateBlocks(int xLength, int yLength)
 {
     for (int y = 0; y < yLength; y++)
     {
         for (int x = 0; x < xLength; x++)
         {
             GameObject blockGo    = Instantiate(mPrefabBlock, new Vector3(x * BLOCK_SIZE + BLOCK_SIZE_HALF, BLOCK_SIZE_HALF, y * BLOCK_SIZE + BLOCK_SIZE_HALF), Quaternion.identity, transform);
             BlockModel blockModel = blockGo.GetComponent <BlockModel>();
             blockModel.SetPosition(x, y);
             mBlockList.Add(blockModel);
         }
     }
 }
Exemple #2
0
        /// <summary>
        /// ゲームオーバー
        /// 全ての爆弾を表示してゲームオーバーフラグを立てる
        /// </summary>
        private void GameOver(BlockModel target)
        {
            // 全ての爆弾ブロックに通常の爆弾を表示
            var bombBlocks = mBlockList.Where(block => block.HasBomb);

            foreach (BlockModel model in bombBlocks)
            {
                model.ShowBomb(false);
            }

            // ターゲットのみ特別な爆弾に表示を変更
            target.ShowBomb(true);

            // フラグを立てる
            IsGameOver = true;
        }
Exemple #3
0
        /// <summary>
        /// 左クリック
        /// 対象ブロックを開く
        /// </summary>
        public void OnLeftClick(Transform RockPosition)
        {
            Debug.Log("ray");
            // UIにマウスポインターが重なっている場合はこちらの処理を無効
            //if (EventSystem.current.IsPointerOverGameObject()) return;

            Ray        ray = new Ray(RockPosition.position, Vector3.down);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                GameObject go = hit.collider.gameObject;
                Debug.Log(go);
                if (go.tag == GameController.TAG_BLOCK)
                {
                    // 対象が爆弾ブロックか判定
                    BlockModel target = go.GetComponent <BlockModel>();
                    Debug.Log(target);
                    if (target.HasBomb)
                    {
                        // チェック済ならば何もしない
                        if (target.IsCheck)
                        {
                            return;
                        }

                        // チェックしていないなら開いてゲームオーバー

                        GameOver(target);
                    }
                    else
                    {
                        // 爆弾でないならば一連の開く処理
                        OpenBlock(target);

                        // ゲームクリアの判定
                        JudgeGameClear();
                    }
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// 左クリック
        /// 対象ブロックを開く
        /// </summary>
        private void OnLeftClick()
        {
            // UIにマウスポインターが重なっている場合はこちらの処理を無効
            if (EventSystem.current.IsPointerOverGameObject())
            {
                return;
            }

            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                GameObject go = hit.collider.gameObject;
                if (go.tag == GameController.TAG_BLOCK)
                {
                    // 対象が爆弾ブロックか判定
                    BlockModel target = go.GetComponent <BlockModel>();
                    if (target.HasBomb)
                    {
                        // チェック済ならば何もしない
                        if (target.IsCheck)
                        {
                            return;
                        }

                        // チェックしていないなら開いてゲームオーバー
                        GameOver(target);
                    }
                    else
                    {
                        // 爆弾でないならば一連の開く処理
                        OpenBlock(target);

                        // ゲームクリアの判定
                        JudgeGameClear();
                    }
                }
            }
        }
Exemple #5
0
 private void CheckBlock(BlockModel target)
 {
     target.ChangeCheckFlg();
 }