| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | using System;using Core.Triiger;using GameLogic.Combat.Hero;using UnityEngine;using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;namespace Common.Combat.FxAILogic{    public class FxAIBeelineBulletLogic : FxAILogicBasic    {        public float speed;        private IUnRegister UnRegister = null;        private Vector3 endPos;        private Vector3 dir;        protected override void ProInit()        {            UnRegister = gameObject.OnTriggerEnterEvent(OnTriggerEnterEvent);            endPos = AttTarget.GetSpecialDotInfo("hitpos").GetWorlPos();            dir = (endPos - CurrPos).normalized;            gameObject.transform.rotation = Quaternion.LookRotation(dir);        }        protected void OnTriggerEnterEvent(Collider collision)        {            HeroEntityMono heroEntityMono = collision.gameObject.GetComponent<HeroEntityMono>();            if (heroEntityMono == null)            {                return;            }            CombatHeroEntity target = heroEntityMono.combatHeroEntity;            if (target.IsEnemy == CombatHeroEntity.IsEnemy)            {                return;            }            ITimeLineTriggerEvent timeLineTriggerEvent =                TimeLineEventParticleLogicBasic.ITimeLineTriggerEntity as ITimeLineTriggerEvent;            if (timeLineTriggerEvent != null)            {                timeLineTriggerEvent.TimeLineTrigger(TimeLineEventParticleLogicBasic.TimeLineEventLogicGroup.groupName,                    target.GetMainHotPoin<ILifetCycleHitPoint>(), this, triggerData);                Dispose();            }        }        protected override void ProCombatUpdate(float time)        {            Vector3 lastPos = _currPos;            Vector3 movePos = dir * speed * time;            _currPos += movePos;            gameObject.transform.position = _currPos;            if (Vector3.SqrMagnitude(_currPos - startPos) > 100)            {                Dispose();            }        }        protected override void ProDispose()        {            if (UnRegister != null)            {                UnRegister.UnRegister();            }            UnRegister = null;        }    }}
 |