Эх сурвалжийг харах

攻击对象脱离SearchTrigger后更换目标

wulifu 1 жил өмнө
parent
commit
09131c68a7

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Enemy.cs

@@ -940,7 +940,7 @@ public class Enemy : MoveCharacter
                 }
                 }
                 break;
                 break;
             case SearchState.InAttackScope:
             case SearchState.InAttackScope:
-                if (targetCharacter != null)
+                if (targetCharacter != null && !searchTrigger.IsCharacterLeave(targetCharacter, targetTypes, canHitFly))
                 {
                 {
                     if (!targetCharacter.gameObject.activeInHierarchy || targetCharacter.isDie
                     if (!targetCharacter.gameObject.activeInHierarchy || targetCharacter.isDie
                         || Mathf.Abs(targetCharacter.transform.position.x - transform.position.x) > attackDistance)
                         || Mathf.Abs(targetCharacter.transform.position.x - transform.position.x) > attackDistance)

+ 13 - 0
ActionTowerDefense/Assets/Scripts/SearchTrigger.cs

@@ -125,6 +125,19 @@ public class SearchTrigger : MonoBehaviour
         return list;
         return list;
     }
     }
 
 
+    public bool IsCharacterLeave(Character character, List<TargetType> targetTypes, bool canHitFly)
+    {
+        List<Character> list = GetAllTargets(targetTypes, canHitFly);
+        for (int i = 0; i < list.Count; i++)
+        {
+            if (list[i] == character)
+            {
+                return false;
+            }
+        }
+        return true;
+    }
+
     public Character GetMinDisTarget(List<TargetType> targetTypes, bool canHitFly)
     public Character GetMinDisTarget(List<TargetType> targetTypes, bool canHitFly)
     {
     {
         List<Character> list = GetAllTargets(targetTypes, canHitFly);
         List<Character> list = GetAllTargets(targetTypes, canHitFly);