瀏覽代碼

隐身结束后召唤

LAPTOP-OM1V99U2\永远de小亡灵 1 年之前
父節點
當前提交
60f845295a

+ 34 - 42
ActionTowerDefense/Assets/Resources/Prefab/MySpirit/Spirits_Invisible.prefab

@@ -158,7 +158,7 @@ Transform:
   - {fileID: 2730232521377132808}
   - {fileID: 5061628209490452354}
   - {fileID: 4824124076759881995}
-  - {fileID: 2465817539840671398}
+  - {fileID: 2402564993436142059}
   - {fileID: 8507731236713456294}
   m_Father: {fileID: 0}
   m_RootOrder: 0
@@ -383,7 +383,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &2437299196663985746
 Transform:
   m_ObjectHideFlags: 0
@@ -1098,100 +1098,92 @@ MonoBehaviour:
   angle: 0
   soulsNumber: 0
   rotateSpeed: 90
-  soul: {fileID: 2215608650533722055}
+  soul: {fileID: 1723151111827507807, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
+  soul1: {fileID: 2402564993436142063}
   eSpirits: {fileID: 0}
   soulsList: []
   distance: 1.5
   isTransfiguration: 1
   KBoomSoulTime: -100
-  soulBoom: {fileID: 1125884991471150034}
+  soulBoom: {fileID: 0}
   isBooming: 0
   isBoom: 0
   boomSoulNumber: 0
   soulCollector: {fileID: 0}
   boomScale: 0
   parent: {fileID: 4824124076759881995}
---- !u!1001 &3878033803522684157
+--- !u!1001 &3944727692468847536
 PrefabInstance:
   m_ObjectHideFlags: 0
   serializedVersion: 2
   m_Modification:
     m_TransformParent: {fileID: 2437299196472462364}
     m_Modifications:
-    - target: {fileID: 1723151111827507803, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507803, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_RootOrder
       value: 4
       objectReference: {fileID: 0}
-    - target: {fileID: 1723151111827507803, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507803, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_LocalPosition.x
       value: 0
       objectReference: {fileID: 0}
-    - target: {fileID: 1723151111827507803, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507803, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_LocalPosition.y
       value: 0
       objectReference: {fileID: 0}
-    - target: {fileID: 1723151111827507803, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507803, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_LocalPosition.z
       value: 0
       objectReference: {fileID: 0}
-    - target: {fileID: 1723151111827507803, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507803, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_LocalRotation.w
       value: 1
       objectReference: {fileID: 0}
-    - target: {fileID: 1723151111827507803, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507803, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_LocalRotation.x
-      value: -0
+      value: 0
       objectReference: {fileID: 0}
-    - target: {fileID: 1723151111827507803, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507803, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_LocalRotation.y
-      value: -0
+      value: 0
       objectReference: {fileID: 0}
-    - target: {fileID: 1723151111827507803, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507803, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_LocalRotation.z
-      value: -0
+      value: 0
       objectReference: {fileID: 0}
-    - target: {fileID: 1723151111827507803, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507803, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_LocalEulerAnglesHint.x
       value: 0
       objectReference: {fileID: 0}
-    - target: {fileID: 1723151111827507803, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507803, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_LocalEulerAnglesHint.y
       value: 0
       objectReference: {fileID: 0}
-    - target: {fileID: 1723151111827507803, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507803, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_LocalEulerAnglesHint.z
       value: 0
       objectReference: {fileID: 0}
-    - target: {fileID: 1723151111827507807, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507807, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_Name
-      value: FollowSoulEffect
+      value: soul
       objectReference: {fileID: 0}
-    - target: {fileID: 1723151111827507807, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
+    - target: {fileID: 1723151111827507807, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
       propertyPath: m_IsActive
       value: 0
       objectReference: {fileID: 0}
-    m_RemovedComponents: []
-  m_SourcePrefab: {fileID: 100100000, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
---- !u!114 &1125884991471150034 stripped
-MonoBehaviour:
-  m_CorrespondingSourceObject: {fileID: 4201428945599059759, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
-  m_PrefabInstance: {fileID: 3878033803522684157}
+    m_RemovedComponents:
+    - {fileID: 1723151111827507800, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
+    - {fileID: 1723151111827507801, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
+  m_SourcePrefab: {fileID: 100100000, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
+--- !u!4 &2402564993436142059 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 1723151111827507803, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
+  m_PrefabInstance: {fileID: 3944727692468847536}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 0}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: a7ca44b9cabcdeb4bb198cc532b04e86, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
---- !u!1 &2215608650533722055 stripped
+--- !u!1 &2402564993436142063 stripped
 GameObject:
-  m_CorrespondingSourceObject: {fileID: 3129693219121881914, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
-  m_PrefabInstance: {fileID: 3878033803522684157}
-  m_PrefabAsset: {fileID: 0}
---- !u!4 &2465817539840671398 stripped
-Transform:
-  m_CorrespondingSourceObject: {fileID: 1723151111827507803, guid: a956ce2c24a9a8b4b98cbf27ef623367, type: 3}
-  m_PrefabInstance: {fileID: 3878033803522684157}
+  m_CorrespondingSourceObject: {fileID: 1723151111827507807, guid: e2b65aa482f2f1447a4074208d72b778, type: 3}
+  m_PrefabInstance: {fileID: 3944727692468847536}
   m_PrefabAsset: {fileID: 0}
 --- !u!1001 &7464584808883890403
 PrefabInstance:

+ 2 - 1
ActionTowerDefense/Assets/Resources/Prefab/soul.prefab

@@ -9843,6 +9843,7 @@ MonoBehaviour:
   from: {x: 0, y: 0, z: 0}
   to: {x: 0, y: 0, z: 0}
   time: 0
+  Spirits_Invisible_NotFind: 0
 --- !u!54 &1723151111827507801
 Rigidbody:
   m_ObjectHideFlags: 0
@@ -9867,7 +9868,7 @@ BoxCollider:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1723151111827507807}
   m_Material: {fileID: 13400000, guid: 4c155add39c5f9e4e87a906b605d36f3, type: 2}
-  m_IsTrigger: 0
+  m_IsTrigger: 1
   m_Enabled: 1
   serializedVersion: 2
   m_Size: {x: 1, y: 1, z: 20}

+ 2 - 0
ActionTowerDefense/Assets/Scripts/Soul.cs

@@ -24,6 +24,8 @@ public class Soul : MonoBehaviour
     [HideInInspector]
     public float time;
 
+    public bool Spirits_Invisible_NotFind;
+
     private void Awake()
     {
         SoulInMap.souls.Add(this);

+ 25 - 14
ActionTowerDefense/Assets/Scripts/Spirits/SoulFollowEffect.cs

@@ -9,6 +9,7 @@ public class SoulFollowEffect : MonoBehaviour
     public int soulsNumber;
     public float rotateSpeed;
     public GameObject soul;
+    public GameObject soul1;
     public ESpirits_Invisible eSpirits;
     [HideInInspector]
     public List<GameObject> soulsList = new List<GameObject>();
@@ -28,7 +29,7 @@ public class SoulFollowEffect : MonoBehaviour
         {
             for (int i = 0; i < eSpirits.followNumber; i++)
             {
-                GameObject newSoul = Instantiate(soul.gameObject);
+                GameObject newSoul = Instantiate(soul1.gameObject);
                 newSoul.transform.parent = transform;
                 newSoul.SetActive(false);
                 soulsList.Add(newSoul);
@@ -75,30 +76,40 @@ public class SoulFollowEffect : MonoBehaviour
 
 
     }
-    public void Boom()
+    public void DropSoul(int souNumber) 
     {
-        GameObject boomSoul = Instantiate(soulBoom.gameObject);
-        boomSoul.transform.position = transform.position;
-        
-        if (isTransfiguration)
+        float angle = 360f / souNumber;
+        for (int i = 0; i < souNumber; i++)
         {
-            boomSoul.transform.parent = parent;
-            Transform bomb = boomSoul.transform.GetChild(0);
-            boomSoul.transform.localScale = Vector3.one * boomScale;
-            for (int i = 0; i < bomb.childCount; i++)
-            {
-                bomb.GetChild(i).localScale = Vector3.one * boomScale;
-            }
+            GameObject soulObj = PoolManager.Instantiate(soul, transform.position);
+            float targetRad = angle * i * Mathf.Deg2Rad;
+
+            soulObj.transform.position = transform.position + 
+                new Vector3(distance * Mathf.Cos(targetRad), distance * Mathf.Sin(targetRad), 0);
+            Soul soulScript = soulObj.GetComponent<Soul>();
+            soulScript.Spirits_Invisible_NotFind = true;
+            soulScript.upSpeed = 0;
+            soulScript.Burst(Vector3.zero);
 
         }
+
         
+
+    }
+
+    public void Boom()
+    {
+        GameObject boomSoul = Instantiate(soulBoom.gameObject);
+        boomSoul.transform.position = transform.position;
         boomSoul.SetActive(true);
+
+
     }
     public void ShowSouls(int newNumber)
     {
         if(soulsList.Count < newNumber)
         {
-            GameObject newSoul = Instantiate(soul.gameObject);
+            GameObject newSoul = Instantiate(soul1.gameObject);
             newSoul.transform.parent = transform;
             newSoul.SetActive(false);
             soulsList.Add(newSoul);

+ 33 - 10
ActionTowerDefense/Assets/Scripts/Spirits/Spirits_Invisible.cs

@@ -97,7 +97,21 @@ public class Spirits_Invisible : MonoBehaviour
                 Goto(targetPos, moveSpeed);
                 break;
             case InvisibleState.FindSoul:
-                if (targetSoul.gameObject.activeSelf)
+                if (targetSoul == null)
+                {
+                    if (haveSoulNumber == 0)
+                    {
+                        ChangeState(InvisibleState.Normal);
+                    }
+                    else
+                    {
+
+                        ChangeState(InvisibleState.FindPlayer);
+                    }
+
+                    break;
+                }
+                if (targetSoul.gameObject.activeSelf && !targetSoul.Spirits_Invisible_NotFind)
                 {
                     pos1 = new Vector3(transform.position.x, transform.position.y, 0);
                     pos2 = new Vector3(targetSoul.transform.position.x,
@@ -108,23 +122,20 @@ public class Spirits_Invisible : MonoBehaviour
                         targetSoul.gameObject.SetActive(false);
                         haveSoulNumber++;
                         followEffect.ShowSouls(haveSoulNumber);
-                        if (haveSoulNumber == followNumber)
+                        if (haveSoulNumber == followNumber || SoulInMap.souls.Count == 0)
                         {
                             ChangeState(InvisibleState.FindPlayer);
                             break;
                         }
                         FindSoul();
+
                     }
                 }
                 else
                 {
                     FindSoul();
                 }
-                if (targetSoul == null)
-                {
-                    ChangeState(InvisibleState.Normal);
-                    break;
-                }
+
                 targetPos = new Vector3(targetSoul.transform.position.x, targetSoul.transform.position.y,
                     transform.position.z);
 
@@ -134,7 +145,7 @@ public class Spirits_Invisible : MonoBehaviour
             case InvisibleState.FindPlayer:
                 pos1 = new Vector3(transform.position.x, transform.position.y, 0);
                 pos2 = new Vector3(PlayersInput.instance[demonic.playerID].transform.position.x + backSoulX,
-                    PlayersInput.instance[demonic.playerID].transform.position.y + 0.5f, 0);
+                    PlayersInput.instance[demonic.playerID].transform.position.y + 1, 0);
                 if (Vector3.Distance(pos1, pos2) <= 1)
                 {
                     ChangeState(InvisibleState.Boom);
@@ -188,7 +199,7 @@ public class Spirits_Invisible : MonoBehaviour
             case InvisibleState.Boom:
                 rb.velocity = Vector3.zero;
                 followEffect.ShowSouls(0);
-                followEffect.Boom();
+                followEffect.DropSoul(haveSoulNumber);
                 haveSoulNumber = 0;
                 break;
             case InvisibleState.Die:
@@ -215,6 +226,7 @@ public class Spirits_Invisible : MonoBehaviour
         if (souls.Count == 0)
         {
             targetSoul = null;
+            print(111);
             return;
         }
         pos1 = new Vector3(souls[0].transform.position.x, souls[0].transform.position.y, 0);
@@ -223,15 +235,26 @@ public class Spirits_Invisible : MonoBehaviour
         int targetSoulId = 0;
         for (int i = 1; i < souls.Count; i++)
         {
+            if (souls[i].Spirits_Invisible_NotFind)
+            {
+                continue;
+            }
             pos1 = new Vector3(souls[i].transform.position.x, souls[i].transform.position.y, 0);
             pos2 = new Vector3(transform.position.x, transform.position.y, 0);
             float distance = Vector3.Distance(pos1, pos2);
-            if (distance < minDistance)
+            if (souls[targetSoulId].Spirits_Invisible_NotFind || distance < minDistance)
             {
                 minDistance = distance;
                 targetSoulId = i;
             }
         }
+        if (souls[targetSoulId].Spirits_Invisible_NotFind)
+        {
+            targetSoul = null;
+            print(2222);
+            return;
+        }
         targetSoul = souls[targetSoulId];
+        print(targetSoul);
     }
 }