private void Battle(UniteBase suffer, float dmg) //受ける側を入れる { float allHP = suffer._HP * suffer._NUMBER; if (allHP > dmg) { //Debug.Log(suffer.name + "dmg:" + dmg); allHP -= dmg; //与ダメ //Debug.Log(suffer.name +"HP:" + allHP); int nokori = Mathf.CeilToInt(allHP / suffer._HP); //残数計算(切り上げ) suffer._NUMBER = nokori; //代入 } else { //撃破の時 suffer._NUMBER = 0; } }
//一人攻撃用 public void BattleCalculate(List <UniteBase> _Diffender, UniteBase _Attacker, TerrainBase BattleZone) { //Debug.Log("oson"); //初期化 Attacker.Clear(); Diffender.Clear(); //キャッシュ Diffender = new List <UniteBase>(_Diffender); Attacker.Add(_Attacker); A[0] = Attacker[0].UnitAtkCalculate() * ((100 - BattleZone.B_DEF) / 100); //攻撃側攻撃力計算 バフはダメージカット for (int i = 0; i < Diffender.Count; i++) { if (Diffender[i] != null) { D[i] = Diffender[i].UnitAtkCalculate() * ((BattleZone.B_ATK + 100) / 100); //防御側攻撃力計算 バフは攻撃力上昇 } else { D[i] = 0; } } //Debug.Log("D0:" + D[0] + ",D1:" + D[1]); //防御側ダメージ計算 for (int i = 0; i < Diffender.Count; i++) { //0番目は攻撃力の2/3を受ける Battle(Diffender[i], (A[0] / 3) * (2 - i)); } //攻撃側ダメージ計算 for (int j = 0; j < 3; j++) { //0番目は攻撃力の2/3を受ける Battle(Attacker[0], D[j]); } _Diffender.Clear(); //_Attacker.Clear(); //Debug.Log(Diffender.Count); //値を返却 for (int i = 0; i < Diffender.Count; i++) { //Debug.Log(Diffender[i].name); if (Diffender[i] && Diffender[i]._HP > 0) { _Diffender.Add(Diffender[i]); } } //for (int i = 0; i < Attacker.Count; i++) //{ // if (Attacker[i] && Attacker[i]._HP > 0) // _Attacker.Add(Attacker[i]); //} //HPが0なら攻撃者をnullで返す if (Attacker[0]._HP < 0) { //_Attacker = null; Debug.Log("やられたー"); } }