瀏覽代碼

敌方在防御塔顶端不会抽搐

LAPTOP-OM1V99U2\永远de小亡灵 1 年之前
父節點
當前提交
3e25470c96
共有 2 個文件被更改,包括 15 次插入9 次删除
  1. 4 4
      ActionTowerDefense/Assets/Scenes/SampleScene.unity
  2. 11 5
      ActionTowerDefense/Assets/Scripts/Enemy.cs

+ 4 - 4
ActionTowerDefense/Assets/Scenes/SampleScene.unity

@@ -394,7 +394,7 @@ MonoBehaviour:
   rb: {fileID: 0}
   feet: []
   edgeDistance: 0
-  canDown: 0
+  canDown: 1
 --- !u!1 &317380082
 GameObject:
   m_ObjectHideFlags: 0
@@ -11053,7 +11053,7 @@ MonoBehaviour:
   rb: {fileID: 0}
   feet: []
   edgeDistance: 0
-  canDown: 0
+  canDown: 1
 --- !u!1 &815407864
 GameObject:
   m_ObjectHideFlags: 0
@@ -17673,7 +17673,7 @@ MonoBehaviour:
   rb: {fileID: 0}
   feet: []
   edgeDistance: 0
-  canDown: 0
+  canDown: 1
 --- !u!1 &1500161231
 GameObject:
   m_ObjectHideFlags: 0
@@ -28021,7 +28021,7 @@ MonoBehaviour:
   rb: {fileID: 0}
   feet: []
   edgeDistance: 0
-  canDown: 0
+  canDown: 1
 --- !u!1 &2051679828
 GameObject:
   m_ObjectHideFlags: 0

+ 11 - 5
ActionTowerDefense/Assets/Scripts/Enemy.cs

@@ -123,12 +123,18 @@ public class Enemy : MoveCharacter
                         moveDir = Vector3.right;
                         break;
                     }
-                    float minDistance =
-                        Vector3.Distance(transform.position, TowerMap.myTowers[0].transform.position);
-                    int id = 0;
-                    for(int i = 1; i < TowerMap.myTowers.Count; i++)
+                    float minDistance = Mathf.Infinity;
+                    int id = -1;
+                    for (int i = 0; i < TowerMap.myTowers.Count; i++)
                     {
-                        float distance = Vector3.Distance(transform.position, TowerMap.myTowers[i].transform.position);
+                        Tower myTower = TowerMap.myTowers[i].GetComponent<Tower>();
+                        if (transform.position.y >
+                            myTower.transform.position.y + myTower.height)
+                        {
+                            continue;
+                        }
+                        float distance = Vector3.Distance(transform.position, 
+                            TowerMap.myTowers[i].transform.position);
                         if (distance < minDistance)
                         {
                             minDistance = distance;