| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 | 
							- using System.Collections;
 
- using System.Collections.Generic;
 
- using Common.Combat.FxAILogic;
 
- using Core.Audio;
 
- using Core.Triiger;
 
- using GameLogic.Combat.CombatTool;
 
- using GameLogic.Combat.Hero;
 
- using UnityEngine;
 
- using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
 
- [AddComponentMenu("特效脚本/弹道/导航型子弹")]
 
- public class FxNavigationLogic : FxAILogicBasic
 
- {
 
-     public float speed;
 
-     [Header("多少秒后开始导航")] public float delayNavigation;
 
-     [Header("最长持续时间")] public float continuedTime=10;
 
-     public int PenetrateCount=1;
 
-     private IUnRegister UnRegister = null;
 
-     private Vector3 endPos;
 
-     private Vector3 dir;
 
-     private float currTime;
 
-     private bool NavigationState;
 
-     private float _currNavigationStateTime;
 
-     private int _currPenetrateCount;
 
-     // private float _NavigationInterval;
 
-     protected CombatHeroEntity _currNavigationTargetHero;
 
-     protected override void ProInit()
 
-     {
 
-         UnRegister = gameObject.OnTriggerEnterEvent(this,OnTriggerEnterEvent);
 
-         if (isUseCustomTargetEndPos)
 
-         {
 
-             endPos = TimeLineEventParticleLogicBasic.customizePos[
 
-                 customTargetEndPosIndex];
 
-         }
 
-         else
 
-         {
 
-             endPos = AttTarget.GetSpecialDotInfo("hitpos").GetWorlPos();
 
-         }
 
-         _currNavigationTargetHero = null;
 
-         endPos = new Vector3(endPos.x, CurrPos.y, endPos.z);
 
-         dir = (endPos - CurrPos).normalized;
 
-         gameObject.transform.rotation = Quaternion.LookRotation(dir);
 
-         NavigationState = false;
 
-         currTime = 0;
 
-         _currNavigationStateTime = 0;
 
-         _currPenetrateCount = 0;
 
-     }
 
-     protected void OnTriggerEnterEvent(Collider collision,ITriggerEntity triggerEntity)
 
-     {
 
-         HeroEntityMono heroEntityMono = collision.gameObject.GetComponent<HeroEntityMono>();
 
-         if (heroEntityMono == null)
 
-         {
 
-             return;
 
-         }
 
-         CombatHeroEntity target = heroEntityMono.combatHeroEntity;
 
-         if (target.IsEnemy == CombatHeroEntity.IsEnemy)
 
-         {
 
-             return;
 
-         }
 
-         if (target.isDie || target.GetMainHotPoin<ILifetCycleHitPoint>() == null)
 
-         {
 
-             return;
 
-         }
 
-         ITimeLineTriggerEvent timeLineTriggerEvent =
 
-             TimeLineEventParticleLogicBasic.ITimeLineTriggerEntity as ITimeLineTriggerEvent;
 
-         if (timeLineTriggerEvent != null)
 
-         {
 
-             timeLineTriggerEvent.TimeLineTrigger(TimeLineEventParticleLogicBasic.TimeLineEventLogicGroup.groupName,
 
-                 target.GetMainHotPoin<ILifetCycleHitPoint>(), this, triggerData,SkillFeaturesData);
 
-             if (!string.IsNullOrEmpty(hitFxName))
 
-             {
 
-                 CombatController.currActiveCombat.GameTimeLineParticleFactory.CreateParticle(hitFxName,
 
-                     collision.ClosestPoint(gameObject.transform.position), null, false, null, null);
 
-             }
 
-             _currPenetrateCount++;
 
-             AudioManager.Instance.PlayAudio(hitAudioName, false);
 
-             NavigationState = false;
 
-             _currNavigationStateTime = delayNavigation-0.1f;
 
-             if (!isPenetrate||_currPenetrateCount>=PenetrateCount)
 
-             {
 
-                 Dispose();
 
-             }
 
-         }
 
-     }
 
-     protected override void ProCombatUpdate(float time)
 
-     {
 
-         currTime += time;
 
-         if (!NavigationState)
 
-         {
 
-             _currNavigationStateTime += time;
 
-             // if (Vector3.SqrMagnitude(_currPos - startPos) > 200)
 
-             // {
 
-             //     Dispose();
 
-             // }
 
-             if (_currNavigationStateTime > delayNavigation)
 
-             {
 
-                 NavigationState = true;
 
-             }
 
-         }
 
-         else
 
-         {
 
-             if (_currNavigationTargetHero == null || _currNavigationTargetHero.isDie)
 
-             {
 
-                 FindNavigationTarget();
 
-             }
 
-             if (_currNavigationTargetHero != null)
 
-             {
 
-                 // Vector3 dotPos= _currNavigationTargetHero.dotPos + new Vector3(0, 0.5f, 0);
 
-                 // _currPos=
 
-                 Vector3 newDir = (_currNavigationTargetHero.dotPos - _currPos).normalized;
 
-                 dir = Vector3.Lerp(dir, newDir, 0.1f);
 
-                 dir.y = 0;
 
-                 dir.Normalize();
 
-             }
 
-         }
 
-         Vector3 lastPos = _currPos;
 
-         Vector3 movePos = dir * speed * time;
 
-         _currPos += movePos;
 
-         gameObject.transform.position = _currPos;
 
-         gameObject.transform.rotation = Quaternion.LookRotation(dir);
 
-         if (currTime > continuedTime)
 
-         {
 
-             Dispose();
 
-             return;
 
-         }
 
-     }
 
-     private void FindNavigationTarget()
 
-     {
 
-         _currNavigationTargetHero = null;
 
-         CombatHeroEntity[] allHero =
 
-             CombatController.currActiveCombat.CombatHeroController.GetHero(!CombatHeroEntity.IsEnemy,out int maxCount);
 
-         if (allHero == null || maxCount <= 0)
 
-         {
 
-             return;
 
-         }
 
-         int index = CombatCalculateTool.Instance.GetOdd(0, maxCount);
 
-         _currNavigationTargetHero = allHero[index];
 
-         // for (int i = 0; i < allHero.Length; i++)
 
-         // {
 
-         //     
 
-         // }
 
-     }
 
-     protected override void ProDispose()
 
-     {
 
-         if (UnRegister != null)
 
-         {
 
-             UnRegister.UnRegister();
 
-         }
 
-         UnRegister = null;
 
-         _currNavigationTargetHero = null;
 
-     }
 
- }
 
 
  |