فهرست منبع

修复使魔站在敌方塔顶抽搐问题

LAPTOP-OM1V99U2\永远de小亡灵 1 سال پیش
والد
کامیت
19b927cbea

+ 18 - 5
ActionTowerDefense/Assets/Scripts/Demonic.cs

@@ -153,18 +153,29 @@ public class Demonic : MoveCharacter
                             moveDir = Vector3.left;
                             break;
                         }
-                        float minDistance =
-                            Vector3.Distance(transform.position, TowerMap.enemyTowers[0].transform.position);
-                        int id = 0;
-                        for (int i = 1; i < TowerMap.enemyTowers.Count; i++)
+                        float minDistance = Mathf.Infinity;
+                        int id = -1;
+                        for (int i = 0; i < TowerMap.enemyTowers.Count; i++)
                         {
-                            float distance = Vector3.Distance(transform.position, TowerMap.enemyTowers[i].transform.position);
+                            EnemyTower enemyTower = TowerMap.enemyTowers[i].GetComponent<EnemyTower>();
+                            if(transform.position.y > 
+                                enemyTower.transform.position.y + enemyTower.height)
+                            {
+                                continue;
+                            }
+                            float distance = Vector3.Distance(transform.position,
+                                TowerMap.enemyTowers[i].transform.position);
                             if (distance < minDistance)
                             {
                                 minDistance = distance;
                                 id = i;
                             }
                         }
+                        if(id == -1)
+                        {
+                            moveDir = Vector3.left;
+                            break;
+                        }
                         if (bodyTrans.position.x > TowerMap.enemyTowers[id].transform.position.x)
                         {
                             moveDir = Vector3.left;
@@ -173,6 +184,8 @@ public class Demonic : MoveCharacter
                         {
                             moveDir = Vector3.right;
                         }
+
+
                         break;
                     case SearchState.InSearchScope:
                         if (targetCharacter)

+ 1 - 0
ActionTowerDefense/Assets/Scripts/EnemyTower.cs

@@ -4,6 +4,7 @@ using UnityEngine;
 
 public class EnemyTower : Character
 {
+    public float height = 8;
     private void Awake()
     {
         TowerMap.enemyTowers.Add(gameObject);

+ 1 - 0
ActionTowerDefense/Assets/Scripts/Tower.cs

@@ -5,6 +5,7 @@ using static Spine.Unity.Examples.SpineboyFootplanter;
 
 public class Tower : Character
 {
+    public float height = 8;
     private void Awake()
     {
         TowerMap.myTowers.Add(gameObject);