| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | 
							- using System;
 
- using Core.Audio;
 
- using Core.Triiger;
 
- using GameLogic.Combat.CombatTool;
 
- using GameLogic.Combat.Hero;
 
- using UnityEngine;
 
- using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
 
- namespace Common.Combat.FxAILogic
 
- {
 
-     [AddComponentMenu("特效脚本/弹道/直线飞行弹道")]
 
-     public class FxAIBeelineBulletLogic : FxAILogicBasic
 
-     {
 
-         public float speed;
 
-         private IUnRegister UnRegister = null;
 
-         [Header("释放碰撞到地面时结束")] public bool isTriggerGroundEnd;
 
-         [Header("碰撞到地面时的特效")] public string GroundHitFxName;
 
-         private Vector3 endPos;
 
-         private Vector3 dir;
 
-         public float maxDis = 20;
 
-         protected float maxDisSpr;
 
-         protected override void ProInit()
 
-         {
 
-             maxDisSpr= maxDis* maxDis;
 
-             UnRegister = gameObject.OnTriggerEnterEvent(this,OnTriggerEnterEvent);
 
-             if (isUseCustomTargetEndPos)
 
-             {
 
-                 endPos = TimeLineEventParticleLogicBasic.customizePos[
 
-                     customTargetEndPosIndex];
 
-             }
 
-             else
 
-             {
 
-                 endPos = AttTarget.GetSpecialDotInfo("hitpos").GetWorlPos();
 
-                 endPos = new Vector3(endPos.x, CurrPos.y, endPos.z);
 
-             }
 
-             dir = (endPos - CurrPos).normalized;
 
-             gameObject.transform.rotation = Quaternion.LookRotation(dir);
 
-         }
 
-         void TriggerGround()
 
-         {
 
-             ITimeLineTriggerEvent timeLineTriggerEvent =
 
-                 TimeLineEventParticleLogicBasic.ITimeLineTriggerEntity as ITimeLineTriggerEvent;
 
-             FinishHit(new Vector3(_currPos.x, 0.5f, _currPos.z), GroundHitFxName);
 
-             AudioManager.Instance.PlayAudio(hitAudioName, false);
 
-             if (timeLineTriggerEvent != null)
 
-             {
 
-                 timeLineTriggerEvent.TimeLineTriggerGround(
 
-                     TimeLineEventParticleLogicBasic.TimeLineEventLogicGroup.groupName,
 
-                     this, triggerData);
 
-             }
 
-             AudioManager.Instance.PlayAudio(hitAudioName, false);
 
-             Dispose();
 
-         }
 
-         protected void OnTriggerEnterEvent(Collider collision,ITriggerEntity triggerEntity)
 
-         {
 
-             ITimeLineTriggerEvent timeLineTriggerEvent =
 
-                 TimeLineEventParticleLogicBasic.ITimeLineTriggerEntity as ITimeLineTriggerEvent;
 
-             if (isTriggerGroundEnd)
 
-             {
 
-                 if (collision.gameObject.CompareTag("dimian"))
 
-                 {
 
-                     TriggerGround();
 
-                     return;
 
-                 }
 
-             }
 
-             HeroEntityMono heroEntityMono = collision.gameObject.GetComponent<HeroEntityMono>();
 
-             if (heroEntityMono == null)
 
-             {
 
-                 return;
 
-             }
 
-             CombatHeroEntity target = heroEntityMono.combatHeroEntity;
 
-             if (target.IsEnemy == CombatHeroEntity.IsEnemy)
 
-             {
 
-                 return;
 
-             }
 
-             if (timeLineTriggerEvent != null)
 
-             {
 
-                 timeLineTriggerEvent.TimeLineTrigger(TimeLineEventParticleLogicBasic.TimeLineEventLogicGroup.groupName,
 
-                     target.GetMainHotPoin<ILifetCycleHitPoint>(), this, triggerData,SkillFeaturesData);
 
-                 if (!string.IsNullOrEmpty(hitFxName))
 
-                 {
 
-                     FinishHit(collision.ClosestPoint(gameObject.transform.position), hitFxName);
 
-                 }
 
-                 AudioManager.Instance.PlayAudio(hitAudioName, false);
 
-                 if (!isPenetrate)
 
-                 {
 
-                     Dispose();
 
-                 }
 
-             }
 
-         }
 
-       
 
-         protected override void ProCombatUpdate(float time)
 
-         {
 
-             Vector3 lastPos = _currPos;
 
-             Vector3 movePos = dir * speed * time;
 
-             _currPos += movePos;
 
-             gameObject.transform.position = _currPos;
 
-             if (!isTriggerGroundEnd)
 
-             {
 
-                 if (Vector3.SqrMagnitude(_currPos - startPos) >maxDisSpr)
 
-                 {
 
-                     Dispose();
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 if (_currPos.y < 0.3f)
 
-                 {
 
-                     TriggerGround();
 
-                 }
 
-             }
 
-         }
 
-         protected override void ProDispose()
 
-         {
 
-             if (UnRegister != null)
 
-             {
 
-                 UnRegister.UnRegister();
 
-             }
 
-             UnRegister = null;
 
-         }
 
-     }
 
- }
 
 
  |