using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic; using Excel2Json; using GameLogic.Combat.CombatTool; using GameLogic.Combat.Hero; using UnityEngine; using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface; namespace GameLogic.Combat.Skill { /// /// 弓箭发射多个见 /// public class S40001 : SkillBasic { private float _harm; protected int _count; protected int _currCount; private int _gongJianCount; private SkillConfig _skillBasic4005; protected override void ProInitSkillConfig() { _harm = SelfSkillConfig.effectValue[0]; _count = 3; _gongJianCount = 5; AddTriggerCallBack("sk1_fashe", Sk1_fasheTrigger); } protected override void ProInitSkill() { SkillConfig skillBasic = CombatHeroEntity.CurrCombatHeroInfo.GetGroupSkillConfig(40004); if (skillBasic.ID > 0) { _gongJianCount += (int)skillBasic.effectValue[0]; } _skillBasic4005 = CombatHeroEntity.CurrCombatHeroInfo.GetGroupSkillConfig(40005); } protected override void ProUseSkill() { _finishTimeLineGroupName = "-1"; _currCount = 0; ActiveSk1(); } protected void ActiveSk1() { if (_currCount >= _count) { SkillPlayFinish(); return; } _currCount++; TimeLineEventLogicGroupBasic currMyLoopGroupBasic = ActivationTimeLineData("sk1"); currMyLoopGroupBasic.TimeLineUpdateEnd += ActiveSk1; } protected override ILifetCycleHitPoint[] ProGetTineLineTargetEntity( TimeLineEventLogicBasic timeLineEventLogicBasic) { if (CombatHeroEntity.CombatAIBasic.currFocusTarget == null) { return null; } return new[] { CombatHeroEntity.CombatAIBasic.currFocusTarget.GetThis() .GetMainHotPoin() }; } protected void Sk1_fasheTrigger(string groupName, CombatHeroHitPoint targetEntity, ITimelineFxLogic timelineFxLogic, TriggerData triggerData) { float harm = _harm; if (_skillBasic4005.ID>0) { if (targetEntity.combatHeroEntity.HpBl < _skillBasic4005.effectValue[0]) { harm += _skillBasic4005.effectValue[1]; } } long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value, harm); HarmReturnInfo harmReturnInfo = Harm(CombatHeroEntity, targetEntity, v, AttType.Skill, triggerData); } protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity, ITimelineFxLogic timelineFxLogic, TriggerData triggerData) { int minC = _gongJianCount / 2; int startAngle = minC * -5; for (int i = 0; i < _gongJianCount; i++) { Vector3 forward = CombatHeroEntity.combatHeroGameObject.transform.forward; Quaternion quaternion = Quaternion.AngleAxis(i * 5 + startAngle, Vector3.up); // quaternion = quaternion + CombatHeroEntity.combatHeroGameObject.transform.rotation; // Vector3 newAngle = new Vector3(eulerAngles.x, eulerAngles.y + i * 15+180, eulerAngles.z); // Quaternion quaternion = Quaternion.Euler(newAngle); forward = quaternion * forward; Vector3 targetPos = CombatHeroEntity.combatHeroGameObject.transform.position + forward; ActivationTimeLineData("sk1_fashe", null, new Vector3[] { targetPos }); } } } }