/// <summary> /// 判定技能伤害 /// </summary> public void ProcessSpellAttack(EntityCharacter source, float range, float percent) { Vector3 position = source.Root.transform.position; for (int i = 0; i < _entitys.Count; i++) { EntityObject entity = _entitys[i]; if (entity.EntityID == source.EntityID) { continue; } if (entity is EntityCharacter) { EntityCharacter target = entity as EntityCharacter; float distance = Vector3.Distance(position, target.Root.transform.position); distance -= target.CharData.BodyRadius; if (distance < range) { // 计算最终伤害值 double damage = source.CharData.Damage * (percent / 100f) - target.CharData.Armor; if (damage < 1) { damage = 1; } BattleEvent.DamageHurt msg = new BattleEvent.DamageHurt(); msg.SourceEntityID = source.EntityID; msg.TargetEntityID = target.EntityID; msg.Damage = damage; target.HandleEvent(msg); } } } }
public Skill(EntityCharacter owner, int skillID) { _owner = owner; _skillTable = CfgSkill.Instance.GetConfigTable(skillID); _delayTimer = Timer.CreateOnceTimer(_skillTable.Delay); // 初始化技能动画 if (_skillTable.AnimationID > 0) { _animTable = CfgAnimation.Instance.GetConfigTable(_skillTable.AnimationID); //(_animTable.AnimName, CharacterAnimation.EAnimationLayer.SkillLayer, (WrapMode)_animTable.AnimMode); } }
public CharacterSkill(EntityCharacter owner) { _owner = owner; }
public CharacterMove(EntityCharacter owner) { _owner = owner; _trans = owner.Root.transform; }
public CharacterData(EntityCharacter owner) { _owner = owner; }