Exemplo n.º 1
0
    void tap()
    {
        // タップのタイミングが、Timerとどれくらいずれているかを検証。近さに応じてBAD/GOOD/GREAT/EXCELLENTの4段階評価を表示する

        // タップしたときのTimerの値を取得し、近さに応じて評価を出す
        TIMING tapResult = _timeCtrl.getTapResult();

        // コンボかどうかをカウントする
        if (tapResult == TIMING.EXCELLENT || tapResult == TIMING.GREAT)
        {
            comboCount++;
        }
        else
        {
            // コンボ失敗なら、最大コンボかチェック
            checkMaxCombo();
            comboCount = 0;
        }

        // タップ演出
        if (display_mode == DISPLAY_MODE.CIRCLE)
        {
            iTween.ScaleFrom(_targetCircle, Vector3.one * TARGET_CIRCLE_SCALE_AMOUNT, SCALE_TIME);
        }
        else
        {
            iTween.ScaleFrom(_cubeTarget, _cubeTargetScale * TARGET_CUBE_SCALE_AMOUNT, SCALE_TIME);
        }

        // 評価による処理振り分け
        showTapResult(tapResult);
    }
Exemplo n.º 2
0
    void showTapResult(TIMING pTapResult)
    {
        string resultText = "";
        int    seNumber   = Const.SE_HAT_BAD;
        int    addScore   = 0;
        float  asc        = 0.0f; // コンボ加算用float

        // 遅すぎか早すぎか判定し、早すぎなら << 遅すぎなら >> と表示する。
        bool   isSlow   = (_timeCtrl.getLastDifference() > 0);
        string slowSign = "<<";

        if (isSlow)
        {
            slowSign = ">>";
        }

        switch (pTapResult)
        {
        case TIMING.PERFECT:
            resultText = "PERFECT!";
            asc        = getComboBonus(SCORE_VAL_PERFECT);
            seNumber   = Const.SE_HAT_EXCELLENT;
            break;

        case TIMING.EXCELLENT:
            resultText = "EXCELLENT!";
            asc        = getComboBonus(SCORE_VAL_PERFECT);
            seNumber   = Const.SE_HAT_EXCELLENT;
            break;

        case TIMING.GREAT:
            resultText = "GREAT!";
            asc        = getComboBonus(SCORE_VAL_PERFECT);
            seNumber   = Const.SE_HAT_GREAT;
            break;

        case TIMING.GOOD:
            resultText = "GOOD!";
            addScore  += SCORE_VAL_GOOD;
            seNumber   = Const.SE_HAT_GOOD;
            break;

        case TIMING.BAD:
            resultText = "BAD!";
            seNumber   = Const.SE_HAT_BAD;
            addScore  += SCORE_VAL_BAD;
            break;
        }

        //評価によって音を変えて鳴らす
        _audioCtrl.PlaySE(seNumber);

        // 表記テキストの装飾
        if (isSlow)
        {
            resultText = resultText + slowSign;
        }
        else
        {
            resultText = slowSign + resultText;
        }

        // GREAT以上であればコンボ表記・エフェクト発生・コンボボーナス
        if (pTapResult == TIMING.PERFECT || pTapResult == TIMING.EXCELLENT || pTapResult == TIMING.GREAT)
        {
            resultText += "\n" + comboCount + " COMBO!";
            _effectCtrl.showEffect();
            addScore += Mathf.RoundToInt(asc);
        }

        // スコア加算
        score += addScore;
        _tapResultText.text = resultText;
        _ScoreText.text     = "S:" + score;
        iTween.ScaleFrom(_tapResultText.gameObject, Vector3.one * RESULT_TEXT_SCALE_AMOUNT, SCALE_TIME);

        // プレイヤーのPPTの値から敵に与えるダメージを算出
        float point = (float)addScore / 100 * _playerCtrl.getPPT();

        sendPointToEnemy(point);
    }