Преглед изворни кода

锁魂塔上限、攻击、起手式

SZAND\msx_2 пре 1 година
родитељ
комит
7b46aad55d

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

@@ -30085,7 +30085,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 6220511700128991423, guid: dd98f16e694849044b9b84d56d30cdb1, type: 3}
       propertyPath: m_LocalPosition.x
-      value: 172.3
+      value: 106.4
       objectReference: {fileID: 0}
     - target: {fileID: 6220511700128991423, guid: dd98f16e694849044b9b84d56d30cdb1, type: 3}
       propertyPath: m_LocalPosition.y

+ 8 - 11
ActionTowerDefense/Assets/Scripts/Demonic.cs

@@ -71,16 +71,6 @@ public class Demonic : MoveCharacter
         OnState();
     }
 
-    private void Update()
-    {
-        base.Update();
-        if (isInSoulTower && targetCharacter == null && state != CharacterState.LockSoul && !isReturnSoulTower)
-        {
-            isReturnSoulTower = true;
-            ChangeState(CharacterState.LockSoul);
-        }
-    }
-
     public bool SearchTarget()
     {
         targetCharacter = searchTrigger.GetMinDisTarget(targetTypes, canHitFly);
@@ -497,7 +487,14 @@ public class Demonic : MoveCharacter
             case CharacterState.Attack:
                 if (attackTime <= 0)
                 {
-                    ChangeState(CharacterState.Idle);
+                    if (isInSoulTower)
+                    {
+                        ChangeState(CharacterState.LockSoul);
+                    }
+                    else
+                    {
+                        ChangeState(CharacterState.Idle);
+                    }
                     break;
                 }
                 rb.velocity = new Vector3(velocityAddition,rb.velocity.y,rb.velocity.z);

+ 8 - 1
ActionTowerDefense/Assets/Scripts/MoveCharacter.cs

@@ -255,7 +255,14 @@ public class MoveCharacter : Character
             }
             else if (foot.TrigGround || curHeight <= origY + 0.05f)
             {
-                ChangeState(CharacterState.Idle);
+                if (gameObject.layer == 7 && isInSoulTower)
+                {
+                    ChangeState(CharacterState.LockSoul);
+                }
+                else
+                {
+                    ChangeState(CharacterState.Idle);
+                }
                 ChangeMat(1);
                 floatState = 0;
                 isFloat = false;

+ 8 - 6
ActionTowerDefense/Assets/Scripts/SoulTower/LockSoul.cs

@@ -24,17 +24,15 @@ public class LockSoul : MonoBehaviour
             }
             souls.Add(d);
             d.isRecorded = true;
-            nowLock++;
-            d.ChangeState(CharacterState.LockSoul);
         }
     }
 
     private void OnTriggerEnter(Collider other)
     {
-        if (other.gameObject.layer == 8 || other.gameObject.layer == 6)
+        if (other.gameObject.layer == 6)
         {
             Character c = other.GetComponentInParent<Character>();
-            if (other.gameObject.layer == 6 && c.ls == null)
+            if (c.ls == null)
             {
                 c.ls = this;
             }
@@ -46,17 +44,21 @@ public class LockSoul : MonoBehaviour
     {
         bool isFull = false;
         List<Demonic> re = new List<Demonic>();
+        nowLock = 0;
         foreach(Demonic d in souls)
         {
             if(d.isDie || !d.isInSoulTower)
             {
                 re.Add(d);
             }
+            else
+            {
+                nowLock++;
+            }
         }
         foreach(Demonic d in re)
         {
             souls.Remove(d);
-            nowLock--;
         }
         if (nowLock >= maxLockSoul)
         {
@@ -67,7 +69,7 @@ public class LockSoul : MonoBehaviour
 
     private void OnTriggerExit(Collider other)
     {
-        if (other.gameObject.layer == 8 || other.gameObject.layer == 6)
+        if (other.gameObject.layer == 6)
         {
             Character c = other.GetComponentInParent<Character>();
             c.isInSoulTower = false;

+ 14 - 0
ActionTowerDefense/Assets/Scripts/SoulTower/SoulMaxDistance.cs

@@ -4,6 +4,15 @@ using UnityEngine;
 
 public class SoulMaxDistance : MonoBehaviour
 {
+    private void OnTriggerEnter(Collider other)
+    {
+        if (other.gameObject.layer == 8)
+        {
+            Character c = other.GetComponentInParent<Character>();
+            c.isInSoulTower = true;
+        }
+    }
+
     private void OnTriggerExit(Collider other)
     {
         if (other.gameObject.layer == 7)
@@ -15,5 +24,10 @@ public class SoulMaxDistance : MonoBehaviour
                 d.ChangeState(CharacterState.LockSoul);
             }
         }
+        else if (other.gameObject.layer == 8)
+        {
+            Character c = other.GetComponentInParent<Character>();
+            c.isInSoulTower = false;
+        }
     }
 }

Разлика између датотеке није приказан због своје велике величине
+ 30 - 8
ActionTowerDefense/Assets/TextMesh Pro/Resources/Fonts & Materials/思源黑体SC-Heavy SDF.asset


Неке датотеке нису приказане због велике количине промена