public void HitUnit(Missile self, Unit unit) { if (self.Skill.Data.IsAOE) { self.Blast(null); } else { Gamef.Damage(self.Damage, DamageType.unset, self.Caster, unit); } self.TakeDamage(1e7f); }
public override void Update() { base.Update(); Gamef.Damage(data.Effect * Time.deltaTime, DamageType.unset, caster, target); Gamef.Heal(data.Params[0] * Time.deltaTime, caster, caster); }
public void Blast(Missile exception) { float dis, damage = Skill.Data.Damage; BlastType type; // 制造爆炸力(物理效果) physicalEffectHandler.CreateExplosiveForce(Skill.Data, transform.position); //对单位造成AOE伤害 GameDB.unitPool.Traversal(delegate(Unit other) { if (!other.attributes.isAlive) { return; } dis = (other.transform.position - transform.position).magnitude; if (dis > Skill.Data.OuterBlastRadius) { //do nothing } else { if (dis > Skill.Data.MiddleBlastRadius) { //外圈伤害 damage = Skill.Data.Damage * Skill.Data.OuterDamageCoefficient; type = BlastType.Outer; } else { if (dis > Skill.Data.InnerBlastRadius) { //中圈伤害 damage = Skill.Data.Damage * Skill.Data.MiddleDamageCoefficient; type = BlastType.Middle; } else { //内圈伤害 damage = Skill.Data.Damage * Skill.Data.InnerDamageCoefficient; type = BlastType.Inner; } } Gamef.Damage(damage, DamageType.unset, Caster, other); unitHandler?.Invoke(other, type); } }); //对投掷物造成AOE伤害 GameDB.missilePool.Traversal(delegate(Missile other) { if (!other.IsAlive) { return; } //忽略碰撞到的投掷物 if (other == exception) { missileHandler?.Invoke(other, BlastType.Inner); return; } if (other == this) { return; } dis = (other.transform.position - transform.position).magnitude; if (dis > Skill.Data.OuterBlastRadius) { //do nothing } else { if (dis > Skill.Data.MiddleBlastRadius) { //外圈伤害 damage = Skill.Data.Damage * Skill.Data.OuterDamageCoefficient; type = BlastType.Outer; } else { if (dis > Skill.Data.InnerBlastRadius) { //中圈伤害 damage = Skill.Data.Damage * Skill.Data.MiddleDamageCoefficient; type = BlastType.Middle; } else { //内圈伤害 damage = Skill.Data.Damage * Skill.Data.InnerDamageCoefficient; type = BlastType.Inner; } } other.TakeDamage(damage); missileHandler?.Invoke(other, type); } }); }