Example #1
0
        private IEnumerator DelayMethod()
        {
            for (var i = _listSize - 1; i >= 0; i--)
            {
                _block = _gamemanager.GetAndRemoveList();     //最後尾のブロック要素をオブジェクトに保存
                Vector2 position = _block.transform.position; //そのブロックの座標を取ってくる
                Destroy(_block);                              //ブロックは消す
                //配置する座標を設定
                Vector3 placePosition = position;
                //配置する回転角を設定
                var q = Quaternion.identity;
                //配置
                var obj = Instantiate(boomPrefab, placePosition, q);
                bombSE.Play();

                if (i != 0 && i == _listSize - 4)//4匹目が爆発するときにズームアウトと減速
                {
                    SubCamera.SetActive(true);
                    cameraManager.CameraZoomOut();
                    Destroy(obj, 0.5F);
                    yield return(new WaitForSeconds(0.1F));
                }
                else if (i < _listSize - 4)//4匹以上が爆発するときは減速
                {
                    Destroy(obj, 0.5F);
                    yield return(new WaitForSeconds(0.1F));
                }
                else//それ以外は普通速度
                {
                    Destroy(obj, 1.0F);
                    yield return(new WaitForSeconds(0.8F));//ここで一回この関数やめる。0.8秒後にここに戻ってきて続きをし始める。
                }
            }

            //ここで全部爆破し終わっている
            yield return(new WaitForSeconds(1));

            var resultBoard = Utility.InstantiateGetComponent <ResultBoard>(null, ResultBoard);

            var rank = (int)(_height / 5f);
            var next = 5f - (_height % 5f);

            resultBoard.SetScore((int)_height, rank, next);
            soundManager.StartResult();
        }