LAPTOP-OM1V99U2\永远de小亡灵 1 年之前
父节点
当前提交
967dc197d4
共有 1 个文件被更改,包括 24 次插入10 次删除
  1. 24 10
      ActionTowerDefense/Assets/Scripts/Enemy.cs

+ 24 - 10
ActionTowerDefense/Assets/Scripts/Enemy.cs

@@ -768,13 +768,15 @@ public class Enemy : MoveCharacter
         switch (searchState)
         {
             case SearchState.NoTarget:
-                if (targetCharacter == PlayersInput.instance[0])
+                Character character0 = PlayersInput.instance[0];
+                Character character1 = PlayersInput.instance[1];
+                if (character0.beTargetCharacter.Exists(t => t == this))
                 {
-                    PlayersInput.instance[0].beTargetCharacter.Remove(this);
+                    character0.beTargetCharacter.Remove(this);
                 }
-                if (targetCharacter == PlayersInput.instance[1])
+                if (character1.beTargetCharacter.Exists(t => t == this))
                 {
-                    PlayersInput.instance[1].beTargetCharacter.Remove(this);
+                    character1.beTargetCharacter.Remove(this);
                 }
                 targetCharacter = null;
                 break;
@@ -793,13 +795,17 @@ public class Enemy : MoveCharacter
 
         if (targetCharacter != null)
         {
-            if (targetCharacter == PlayersInput.instance[0])
+            Character character0 = PlayersInput.instance[0];
+            Character character1 = PlayersInput.instance[1];
+            if (targetCharacter == character0
+                && !character0.beTargetCharacter.Exists(t => t == this))
             {
-                PlayersInput.instance[0].beTargetCharacter.Add(this);
+                character0.beTargetCharacter.Add(this);
             }
-            if (targetCharacter == PlayersInput.instance[1])
+            if (targetCharacter == character1
+                && !character1.beTargetCharacter.Exists(t => t == this))
             {
-                PlayersInput.instance[1].beTargetCharacter.Add(this);
+                character1.beTargetCharacter.Add(this);
             }
             return true;
         }
@@ -881,14 +887,22 @@ public class Enemy : MoveCharacter
         if (distance0 <= distance1)
         {
             targetCharacter = PlayersInput.instance[0];
-            PlayersInput.instance[0].beTargetCharacter.Add(this);
+            if (!PlayersInput.instance[0].beTargetCharacter.Exists(t => t == this))
+            {
+                PlayersInput.instance[0].beTargetCharacter.Add(this);
+            }
+            
             distance = distance0;
 
         }
         else
         {
             targetCharacter = PlayersInput.instance[1];
-            PlayersInput.instance[1].beTargetCharacter.Add(this);
+            if (!PlayersInput.instance[1].beTargetCharacter.Exists(t => t == this))
+            {
+                PlayersInput.instance[1].beTargetCharacter.Add(this);
+            }
+                
             distance = distance1;
         }
     }