| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | using Animancer;using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;using GameLogic.Combat.CombatTool;using GameLogic.Combat.Hero;using GameLogic.Combat.Hero.SubStatus;using UnityEngine;using UnityEngine.AI;using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;namespace GameLogic.Combat.Skill{    /// <summary>    /// 小蛇精英怪技能 向前冲撞,对冲撞的敌人造成伤害    /// </summary>    public class S120001 : SkillBasic    {        private float _harm;        private bool _startMove;        private Vector3 moveTargetPos;        private Vector3 moveStartPos;        private float _currTime;        private float _currAddTime;        // protected BetterList<CombatHeroEntity>         protected override void ProInitSkill()        {            _harm = SelfSkillConfig.effectValue[0];        }        protected override void ProUseSkill()        {            ActivationTimeLineData("sk1");        }        // protected override ILifetCycleHitPoint[] ProGetTineLineTargetEntity(        //     TimeLineEventLogicBasic timeLineEventLogicBasic)        // {        //     ILifetCycleHitPoint[] lifetCycleHitPoints = new ILifetCycleHitPoint[_enterAlertTarget.Count];        //        //     for (int i = 0; i < _enterAlertTarget.Count; i++)        //     {        //         CombatHeroHitPoint combatHeroHitPoint = _enterAlertTarget[i].GetMainHotPoin<CombatHeroHitPoint>();        //         lifetCycleHitPoints[i] = combatHeroHitPoint;        //     }        //     return  lifetCycleHitPoints;        // }        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,            ITimelineFxLogic timelineFxLogic,            TriggerData triggerData)        {            _startMove = true;            moveStartPos = CombatHeroEntity.dotPos;            moveTargetPos = CombatHeroEntity.combatHeroGameObject.transform.TransformPoint(new Vector3(0, 0, 5));            _currTime = 0;            _currAddTime = 1.0f / 0.5f;        }        protected override void ProCombatUpdate(float time)        {            if (!_startMove)            {                return;            }            _currTime += time * _currAddTime;            Vector3 t = Vector3.Lerp(moveStartPos, moveTargetPos, _currTime);            CombatHeroEntity.CombatAIBasic.NavMeshAgent.Raycast(t,                out NavMeshHit hit);            if (!hit.hit)            {                CombatHeroEntity.combatHeroGameObject.SetPosition(t);            }            else            {                Debug.Log(("打到墙了" + hit.mask));            }            if (_currTime >= 1)            {                _startMove = false;            }        }        protected override void ProHeroEnter(TimeLineAlertSeriailztion timeLineAlertSeriailztion,            CombatHeroEntity target)        {            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(                CombatHeroEntity.CurrCombatHeroInfo.attack.Value,                _harm);            CombatHeroHitPoint combatHeroHitPoint = target.GetMainHotPoin<CombatHeroHitPoint>();            HarmReturnInfo harmReturnInfo = Harm(CombatHeroEntity, combatHeroHitPoint,                v, AttType.Skill, triggerData);            Vector3 dir = target.combatHeroGameObject.transform.forward * -1;            float d = (target.dotPos - CombatHeroEntity.dotPos).magnitude;            float moveDis = 3 - d;            moveDis = Mathf.Clamp(moveDis, 0, 3);            float jiao = Vector3.Dot(target.combatHeroGameObject.transform.forward,                CombatHeroEntity.combatHeroGameObject.transform.forward);            jiao = Mathf.Abs(jiao);            if (jiao > 0.9)            {                dir += new Vector3(0.8f, 0, 0);            }            RepelledStatusState repelledStatusState = new RepelledStatusState(dir, moveDis*jiao, 10, null);            target.CombatAIBasic.AddSubStatus(repelledStatusState);        }        protected override void ProSkillPlayFinish()        {            _startMove = false;        }    }}
 |