Ejemplo n.º 1
0
    /// <summary>
    /// ElementTypeの相性判定を行ってダメージの最終値と弱点かどうかを判定
    /// </summary>
    /// <param name="attackPower"></param>
    /// <param name="attackElementType"></param>
    /// <returns></returns>
    private (int, bool) JudgeDamageToElementType(int attackPower, ElementType attackElementType)
    {
        //最終的なダメージ値を準備する。初期値として、現在のダメージ値を代入
        int  lastDamage = attackPower;
        bool isWeekness = false;

        //エネミー側の本体やバレットを攻撃者とし、属性値の相性を判定
        if (ElementCompatibilityHelper.GetElementCompatibility(attackElementType, GameData.instance.GetCullentBulletData().elementType))
        {
            //エネミーの攻撃属性がプレイヤー側の弱点であるなら、ダメージ値に倍率をかける
            lastDamage = Mathf.FloorToInt(attackPower * GameData.instance.DamageRatio);

            isWeekness = true;

            Debug.Log("弱点");
        }

        //計算後のダメージ値を戻す
        return(lastDamage, isWeekness);
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Hpの更新処理とエネミーーの破壊確認処理
    /// </summary>
    /// <param name="bullet"></param>
    private void UpdateHP(Bullet bullet)
    {
        //ダメージ確定用
        int bulletPower = 0;

        //弱点判定用。弱点nの場合には、trueに切り替える
        bool isWeekness = false;

        //バレットの属性とエネミーの属性の情報を利用して相性を判定
        if (ElementCompatibilityHelper.GetElementCompatibility(bullet.bulletData.elementType, enemyData.elementType) == true)
        {
            Debug.Log("Element 相性 良");

            //バレットの攻撃力をダメージ倍率分掛けた値にして、計算結果を切り上げてint型にする
            bulletPower = Mathf.FloorToInt(bullet.bulletData.bulletPower * GameData.instance.DamageRatio);

            isWeekness = true;
        }
        else
        {
            //バレットの攻撃力をそのまま利用する
            bulletPower = bullet.bulletData.bulletPower;
        }



        //バレットの攻撃力値用のフロート表示の生成
        CreateFloatingMessageToBulletPower(bulletPower, isWeekness);

        //hpの減算処理
        hp -= bulletPower;

        //HPの上下限の設定
        maxHp = Mathf.Clamp(maxHp, 0, maxHp);

        DisplayHpGauge();

        //hpが0以下になったら
        if (hp <= 0)
        {
            hp = 0;

            //ボスの場合
            if (enemyData.enemyType == EnemyType.Boss)
            {
                //ボス討伐済みのフラグをたてる
                enemyGenerator.SwitchBossDestroyed(true);

                SoundManager.instance.PlaySE(SoundDataSO.SeType.GameClear);
                SoundManager.instance.PlayVoice(SoundDataSO.VoiceType.Win);
            }

            //ExpをTotaExpに加算
            GameData.instance.UpDateTotalExp(enemyData.exp);

            //最新のTotalExpを利用して表示更新
            enemyGenerator.PreparateDisplayTotalExp(enemyData.exp);


            Destroy(gameObject);
        }

        //ノーマル弾の場合
        if (bullet.bulletData.bulletType == BulletDataSO.BulletType.Player_Normal || bullet.bulletData.bulletType == BulletDataSO.BulletType.Player_5ways_Normal)
        {
            Destroy(bullet.gameObject);
        }
    }