예제 #1
0
    /// <summary>
    /// ステージクリア時の処理です。
    /// </summary>
    public void OnStageComplete()
    {
        // すでにゲームをクリアしているかゲームオーバーならば何もしません。
        if ((int)this.phase > (int)StagePlayPhase.Playing)
        {
            return;
        }

        // フェーズをプレイ中からステージクリア時に変更します。
        this.phase = StagePlayPhase.StageComplete;

        // ボールを停止させます。
        coBall.ChangePauseFlag(true);
        // バーを停止させます。
        coBar.ChangePauseFlag(true);

        // 効果音を再生
        Util.PlayAudioClip(this.seStageComplete, Camera.main.transform.position, 1.0f);

        // 現在のステージの状態を「クリア済み」にします。
        string keyStageStatus = StageButton.prefixKeyStageStatus + UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;

        PlayerPrefs.SetInt(keyStageStatus, (int)StageButton.StageStatus.Cleared);

        // 次のステージが設定されている場合
        if (string.IsNullOrEmpty(this.nameNextStage) == false)
        {
            // 次のステージのステータスが「選択不可」ならば「選択可能」にします。
            string keyNextStageStatus = StageButton.prefixKeyStageStatus + this.nameNextStage;
            if (PlayerPrefs.GetInt(keyNextStageStatus) == (int)StageButton.StageStatus.Locked)
            {
                PlayerPrefs.SetInt(keyNextStageStatus, (int)StageButton.StageStatus.Unlocked);
            }
        }
        else
        {
            // 次のステージがない場合は、[Next Stage]の UI は無効、非表示にします。
            this.goNextStage.SetActive(false);
        }

        // ステージクリア時のパネルを有効にします。
        panelOnStageComplete.SetActive(true);
    }
예제 #2
0
    /// <summary>
    /// ゲームオーバー時の処理です。
    /// </summary>
    public void OnGameover()
    {
        // すでにゲームをクリアしているかゲームオーバーならば何もしません。
        if ((int)this.phase > (int)StagePlayPhase.Playing)
        {
            return;
        }

        // フェーズをプレイ中からゲームオーバー時に変更します。
        this.phase = StagePlayPhase.Gameover;

        // ボールを停止させます。
        coBall.ChangePauseFlag(true);
        // バーを停止させます。
        coBar.ChangePauseFlag(true);

        // 効果音を再生
        Util.PlayAudioClip(this.seGameover, Camera.main.transform.position, 1.0f);

        // ステージクリア時のパネルを有効にします。
        panelOnGameover.SetActive(true);
    }
예제 #3
0
    /// <summary>
    /// ポーズ中に表示されているパネルにタッチした直後のイベント。
    /// </summary>
    public void OnPausePanelPointerDown()
    {
        // タッチされた座標をスクリーン座標からワールド座標に変換します。
        // ボールやバーの位置をワールド座標で扱っているため、同じくワールド座標にします。
        Vector3 wPointerDownOnPause = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        // ステージ開始直後、プレイ前のポーズ中の場合
        if (this.phase == StagePlayPhase.Before)
        {
            // ゲーム開始時のみタップした方向にボールの移動方向を設定します。
            // Vector2.Angle は from - (0, 0) - to の成す角度を計算するので、目標位置をボールの位置からひきます。
            float deg = Vector2.Angle(Vector2.right, wPointerDownOnPause - coBall.gameObject.transform.position);
            this.coBall.ChangeDirection(deg);
            // フェーズをプレイ中に変更します
            this.phase = StagePlayPhase.Playing;
        }

        // ボールのコンポーネントのポーズ状態を解除します。
        this.coBall.ChangePauseFlag(false);
        // バーのポーズ状態を解除します。
        coBar.ChangePauseFlag(false);
        // ポーズ時のパネルを無効、非表示にします。
        this.panelOnPause.SetActive(false);
    }