public void AddDamage(int damage, bool isSendRPC = true) { if (damage <= 0) { return; } if (photonView.isMine) { if (parentCtrl != null) { parentCtrl.AddDamage(damage); } else { nowHp -= damage; if (nowHp <= 0) { Break(); } } } else { if (isSendRPC) { stockDamage += damage; if (stockDamage >= maxHp / 10) { photonView.RPC("AddDamageRPC", PhotonTargets.Others, stockDamage); stockDamage = 0; } } } }
//ダメージ処理 protected void AddDamage(GameObject hitObj) { //ダメージ系処理は所有者のみ行う if (photonView.isMine) { //AttackRate計算 float dmg = damage; if (ownerStatus != null) { dmg *= (ownerStatus.attackRate / 100); } if (hitObj.CompareTag("Player") || hitObj.tag == "Target") { isHit = true; if (dmg > 0 || statusChangeCtrl != null) { //プレイヤーステータス PlayerStatus status = GetHitObjStatus(hitObj); if (status.IsReflection()) { Reflection(); return; } //ダメージ float addDmg = AddDamageProccess(status, dmg); //デバフ AddDebuff(status); //スタック if (stuckTime > 0) { status.AttackInterfareMove(stuckTime); } //ノックバック if (knockBackRate != 0 && addDmg > 0) { TargetKnockBack(hitObj.transform, knockBackRate); } } } else if (hitObj.CompareTag(Common.CO.TAG_STRUCTURE)) { isHit = true; //ダメージ倍率計算 if (myTran.tag == Common.CO.TAG_BULLET_EXTRA) { dmg *= Common.CO.EXTRA_BULLET_BREAK_RATE; } StructureController structCtrl = hitObj.GetComponent <StructureController>(); if (structCtrl != null) { structCtrl.AddDamage((int)dmg); } } else if (hitObj.CompareTag(Common.CO.TAG_FLOOR)) { isHit = true; } } }