Exemplo n.º 1
0
    // バー生成NGとボタン表示関数を作る
    private void CreateButton()
    {
        // ノーマルモード
        if (SaveClass.GetGameMode())
        {
            // バーを生成できなくする
            SaveClass.SetIsDraw(false);

            // ボタンを出す
            Instantiate(loadToNormalGame, canvas.transform);
            Instantiate(loadToMenu, canvas.transform);
        }
        // Infiniteモード
        else
        {
            // バーを生成できなくする
            SaveClass.SetIsDraw(false);

            // ボタンを出す
            Instantiate(loadToInfiniteGame, canvas.transform);
            Instantiate(loadToMenu, canvas.transform);

            // CreateInputField();
        }
    }
Exemplo n.º 2
0
    /// <summary>
    /// クリックが離された瞬間の処理
    /// Normalのときだけ最後にパワーゲージが減少する
    /// </summary>
    /// <returns>Lengs(PowerGauge処理に使用)</returns>
    public void KeyUpMoment()
    {
        // バー生成終了ポイント
        if (Input.GetKeyUp(KeyCode.Mouse0))
        {
            // カメラ座標を入れる
            MemoryEndPoint = mainCamera.ScreenToWorldPoint(Input.mousePosition);
            // zを0にそろえる
            MemoryEndPoint.z = 0.0f;
            // Debug.Log("MemoryEndPoint:_" + MemoryEndPoint);

            // バーの生成
            var NewChildren = Instantiate(Bar, new Vector3((MemoryEndPoint.x + MemoryStartPoint.x) * 0.5f, (MemoryStartPoint.y + MemoryEndPoint.y) * 0.5f, 0.0f), Quaternion.identity);
            // EnptyObjectを親にする
            NewChildren.transform.parent = gameObject.transform;
            NewChildren.name             = "Child";

            // ポジションの決定
            //NewChildren.transform.position = new Vector3((MemoryEndPoint.x + MemoryStartPoint.x) * 0.5f, (MemoryStartPoint.y + MemoryEndPoint.y) * 0.5f, 0.0f);

            // 角度の決定
            float AngleX = MemoryEndPoint.x - MemoryStartPoint.x;
            float AngleY = MemoryEndPoint.y - MemoryStartPoint.y;
            float Angle  = Mathf.Atan2(AngleY, AngleX);

            NewChildren.transform.Rotate(Vector3.forward, Angle * Mathf.Rad2Deg);

            // スケールの決定
            var Lengs = Vector3.Magnitude(MemoryEndPoint - MemoryStartPoint);
            NewChildren.transform.localScale = new Vector3(Lengs, 0.3f, 1.0f);

            // ノーマルモード時のみの処理
            if (SaveClass.GetGameMode())
            {
                // パワーゲージ減少
                powerGauge.ReduceGauge(Lengs);
            }
        }
    }
Exemplo n.º 3
0
 /// <summary>
 /// 反射バーの生成
 /// </summary>
 private void CreateReflectionBar()
 {
     // ノーマル時のみパワーゲージ制限がある
     if (SaveClass.GetGameMode())
     {
         // まだパワーゲージが残っていた場合
         if (powerGauge.IsRemain)
         {
             // バー生成終了ポイント
             KeyUpMoment();
             // バーがあるときの再生成時処理
             KeyPushMoment();
         }
     }
     // Infiniteはパワーゲージ制限なし
     else
     {
         // バー生成終了ポイント
         KeyUpMoment();
         // バーがあるときの再生成時処理
         KeyPushMoment();
     }
 }
Exemplo n.º 4
0
    /// <summary>
    /// なんちゃってリザルト画面
    /// </summary>
    public void GotoResultScene()
    {
        // ゲームモードがNormalの場合
        if (SaveClass.GetGameMode())
        {
            // ブロックをすべて消したら
            if (SaveClass.GetIsClear())
            {
                Destroy(ball.gameObject);

                // ゲームクリアテキストの表示
                gameClearText.GetComponent <Text>().enabled = true;

                // ボタンを出す
                CreateButton();
            }

            // 玉が画面外に出たら
            if (!ball.GetComponent <Renderer>().isVisible)
            {
                // 玉を削除
                Destroy(ball.gameObject);
                // ゲームオーバーテキストの表示
                gameOverText.GetComponent <Text>().enabled = true;

                // ボタンを出す
                CreateButton();
            }
        }
        // ゲームモードがInfiniteの場合
        else
        {
            var  ResultScore = ball.DeleteCount * 100;
            bool CanOnlyOnce = false;

            if (!SaveClass.GetGameOver())
            {
                // 玉が画面外に出たら
                if (!ball.GetComponent <Renderer>().isVisible&& !CanOnlyOnce)
                {
                    // 一度きりフラグを折る
                    CanOnlyOnce = true;

                    // ゲームオーバーテキストの表示
                    gameOverTextInfinite.text = ("Game Over\n\nYour Score:" + ResultScore + "\n\nTap to Retry!!");
                    gameOverTextInfinite.GetComponent <Text>().enabled = true;
                }

                foreach (Transform childTransform in blocks.transform)
                {
                    // アクティブなブロックが外に出たら
                    if (!childTransform.GetComponent <Renderer>().isVisible&& childTransform.GetComponent <PrefabStatus>().GetIsActive() && !CanOnlyOnce)
                    {
                        // 一度きりフラグを折る
                        CanOnlyOnce = true;

                        // ゲームオーバーテキストの表示
                        gameOverTextInfinite.text = ("Game Over\n\nYour Score:" + ResultScore + "\n\nTap to Retry!!");
                        gameOverTextInfinite.GetComponent <Text>().enabled = true;
                    }
                }
            }

            // 一度だけ通ってほしいゲーム終了処理
            if (CanOnlyOnce)
            {
                SaveClass.SetGameOver(true);

                // 玉を削除
                Destroy(ball.gameObject);

                // save
                SaveClass.StorePlayerScore(ResultScore);

                // 通信中は何も受け付けないように
                if (!ServerIsBusy)
                {
                    StartCoroutine(WaitServerProcess());
                }
            }
        }
    }
Exemplo n.º 5
0
    private void LateUpdate()
    {
        // カウントダウンが終わったら
        if (CountdownText.IsGameStart())
        {
            // モード共通失敗処理
            ToResult.GotoResultScene();

            // 条件を満たしたらResultへ遷移
            // ノーマルモードの場合
            if (SaveClass.GetGameMode())
            {
                if (BlockCount != DeleteCount)
                {
                    //埋まったレイの長さ
                    float      Check;
                    RaycastHit hit;

                    var BallVectorWork = BallVector;

                    // 物体に衝突したかどうか
                    // 衝突していた場合新しいBallVectorを取得
                    BallVector = Obj.Reflection(BallTrans, BallVector, out Check, out hit);

                    if (BallVector != BallVectorWork)
                    {
                        while (true)
                        {
                            //BallTrans.position = hit.point- BallVector;

                            var work = BallVector.normalized;
                            BallVectorWork = BallVector;
                            work          *= Check;
                            //Debug.Log("Check_:" + Check);

                            BallVector = Obj.Reflection(BallTrans, BallVector, out Check, out hit);

                            if (BallVector == BallVectorWork)
                            {
                                BallTrans.Translate(work);
                                break;
                            }
                        }
                    }
                    else
                    {
                        BallTrans.Translate(BallVector);
                    }
                }
                else
                {
                    // クリアフラグを立てて遷移
                    SaveClass.SetIsClear(true);
                    DeleteCount = 0;
                    ToResult.GotoResultScene();
                }
            }
            // Infiniteモードの場合
            // クリアはないのでひたすらに壁打ち
            // @todo 関数にできそう
            else
            {
                //埋まったレイの長さ
                float      Check;
                RaycastHit hit;

                var BallVectorWork = BallVector;

                // 物体に衝突したかどうか
                // 衝突していた場合新しいBallVectorを取得
                BallVector = Obj.Reflection(BallTrans, BallVector, out Check, out hit);

                if (BallVector != BallVectorWork)
                {
                    while (true)
                    {
                        //BallTrans.position = hit.point- BallVector;

                        var work = BallVector.normalized;
                        BallVectorWork = BallVector;
                        work          *= Check;
                        // Debug.Log("Check_:" + Check);

                        BallVector = Obj.Reflection(BallTrans, BallVector, out Check, out hit);

                        if (BallVector == BallVectorWork)
                        {
                            BallTrans.Translate(work);
                            break;
                        }
                    }
                }
                else
                {
                    BallTrans.Translate(BallVector);
                }



                //while (hit.point > BallVector.magnitude)
                //{
                //    var work = BallVector.normalized;
                //    work * Check
                //    BallVector = Obj.Reflection(BallTrans, BallVector, out Check);
                //}

                //// BallVectorの方向へ移動
                //BallTrans.Translate(BallVector);
            }
        }
    }