/// <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); }
/// <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); } }