Bladeren bron

怪物向最近的塔方向跑

LAPTOP-OM1V99U2\永远de小亡灵 1 jaar geleden
bovenliggende
commit
6eb5bd4a7f

+ 8 - 0
ActionTowerDefense/Assets/Scenes/SampleScene.unity

@@ -16214,6 +16214,10 @@ MonoBehaviour:
   p1To: {fileID: 1734364483}
   p2To: {fileID: 695318508}
   uiSpeed: 0.2
+  player1cards: []
+  choose1: {fileID: 0}
+  player2cards: []
+  choose2: {fileID: 0}
   floatHead: {fileID: 21300000, guid: c3eb7313518da2a4b951d16e791955b8, type: 3}
   CookHead: {fileID: 21300000, guid: 46e6f86b1c70e8140826edf16bf73c75, type: 3}
   AssassinHead: {fileID: 21300000, guid: 6c58c9f91beed454aa0bed1a9657f314, type: 3}
@@ -27625,6 +27629,10 @@ PrefabInstance:
       propertyPath: m_LocalEulerAnglesHint.z
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 6126647545658003378, guid: 27fc9f9c5a91ca44395c454662e9576a, type: 3}
+      propertyPath: isMy
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 6126647545658003378, guid: 27fc9f9c5a91ca44395c454662e9576a, type: 3}
       propertyPath: totalHp
       value: 20000

+ 25 - 9
ActionTowerDefense/Assets/Scripts/Demonic.cs

@@ -148,15 +148,31 @@ public class Demonic : MoveCharacter
                 switch (searchState)
                 {
                     case SearchState.NoTarget:
-                        //if (PlayerController.instance.bodyTrans.localScale.x > 0)
-                        //{
-                        //    moveDir = Vector3.left;
-                        //}
-                        //else
-                        //{
-                        //    moveDir = Vector3.right;
-                        //}
-                        moveDir = Vector3.left;
+                        if(TowerMap.enemyTowers.Count == 0)
+                        {
+                            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 distance = Vector3.Distance(transform.position, TowerMap.enemyTowers[i].transform.position);
+                            if (distance < minDistance)
+                            {
+                                minDistance = distance;
+                                id = i;
+                            }
+                        }
+                        if (bodyTrans.position.x > TowerMap.enemyTowers[id].transform.position.x)
+                        {
+                            moveDir = Vector3.left;
+                        }
+                        else
+                        {
+                            moveDir = Vector3.right;
+                        }
                         break;
                     case SearchState.InSearchScope:
                         if (targetCharacter)

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

@@ -118,7 +118,32 @@ public class Enemy : MoveCharacter
             switch (searchState)
             {
                 case SearchState.NoTarget:
-                    moveDir = Vector3.right;
+                    if (TowerMap.myTowers.Count == 0)
+                    {
+                        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 distance = Vector3.Distance(transform.position, TowerMap.myTowers[i].transform.position);
+                        if (distance < minDistance)
+                        {
+                            minDistance = distance;
+                            id = i;
+                        }
+                    }
+                    if(bodyTrans.position.x > TowerMap.myTowers[id].transform.position.x)
+                    {
+                        moveDir = Vector3.left;
+                    }
+                    else
+                    {
+                        moveDir = Vector3.right;
+                    }
+                    
                     break;
                 case SearchState.InSearchScope:
                     if (targetCharacter)

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

@@ -5,9 +5,20 @@ using static Spine.Unity.Examples.SpineboyFootplanter;
 
 public class Tower : Character
 {
+    public bool isMy;
     private void Awake()
     {
+        if (isMy)
+        {
+            TowerMap.myTowers.Add(gameObject);
+        }
+        else
+        {
+            TowerMap.enemyTowers.Add(gameObject);
+        }
+        
         Init();
+        
     }
 
     public bool GetAttack()
@@ -103,6 +114,14 @@ public class Tower : Character
                 aniCollider.Play("Die", 0, 0);
                 isDie = true;
                 dieKeepTime = totalDieKeepTime;
+                if (isMy)
+                {
+                    TowerMap.myTowers.Remove(gameObject);
+                }
+                else
+                {
+                    TowerMap.enemyTowers.Remove(gameObject);
+                }
                 break;
             default:
                 break;

+ 10 - 0
ActionTowerDefense/Assets/Scripts/TowerMap.cs

@@ -0,0 +1,10 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class TowerMap : MonoBehaviour
+{
+    static public List<GameObject> myTowers = new List<GameObject>();
+    static public List<GameObject> enemyTowers = new List<GameObject>();
+
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/TowerMap.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 45a50b2fab3a0bf4c84bbd9c101da5ea
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: