Jelajahi Sumber

回家后不会被隐身锁定

LAPTOP-OM1V99U2\永远de小亡灵 1 tahun lalu
induk
melakukan
ea1884c46d

+ 43 - 0
ActionTowerDefense/Assets/Scripts/Spirits/ESpirits_Invisible.cs

@@ -10,6 +10,7 @@ public enum InvisibleState
     FindPlayer = 3, //冷鯤소
     Boom = 4,   //괵珞
     Die = 5,    //价空
+    Wait = 6,   //된鯤소놔쳔
 }
 public class ESpirits_Invisible : MonoBehaviour
 {
@@ -147,6 +148,26 @@ public class ESpirits_Invisible : MonoBehaviour
                 if (enemy.targetCharacter == null)
                 {
                     enemy.ChosePlayer();
+                    if(enemy.targetCharacter == null)
+                    {
+                        ChangeState(InvisibleState.Wait);
+                        break;
+                    }
+                }
+                else
+                {
+                    PlayerController playerController = 
+                        enemy.targetCharacter.GetComponent<PlayerController>();
+                    if (playerController.isBaseBtnOut)
+                    {
+                        enemy.ChosePlayer();
+                        if (enemy.targetCharacter == null)
+                        {
+                            ChangeState(InvisibleState.Wait);
+                            break;
+                        }
+
+                    }
                 }
                 pos1 = new Vector3(transform.position.x, transform.position.y, 0);
                 pos2 = new Vector3(enemy.targetCharacter.transform.position.x,
@@ -162,6 +183,21 @@ public class ESpirits_Invisible : MonoBehaviour
             case InvisibleState.Boom:
                 ChangeState(InvisibleState.Normal);
                 break;
+            case InvisibleState.Wait:
+                enemy.ChosePlayer();
+                if (enemy.targetCharacter != null)
+                {
+                    ChangeState(InvisibleState.FindPlayer);
+                }
+                
+                targetPos = new Vector3(posx + offsetX, altitude + offsetY, transform.position.z);
+                Goto(targetPos, moveSpeed);
+                if (Vector3.Distance(targetPos, transform.position) < 1)
+                {
+                    offsetY = Random.Range(-randomRageY, randomRageY);
+                    offsetX = Random.Range(-randomRageX, randomRageX);
+                }
+                break;
             default:
                 break;
         }
@@ -181,6 +217,8 @@ public class ESpirits_Invisible : MonoBehaviour
                 break;
             case InvisibleState.Boom:
                 break;
+            case InvisibleState.Wait:
+                break;
             default:
                 break;
         }
@@ -216,6 +254,11 @@ public class ESpirits_Invisible : MonoBehaviour
                 followEffect.DropSoul(haveSoulNumber, false);
                 gameObject.SetActive(false);
                 break;
+            case InvisibleState.Wait:
+                offsetY = Random.Range(-randomRageY, randomRageY);
+                offsetX = Random.Range(-randomRageX, randomRageX);
+                posx = transform.position.x;
+                break;
             default:
                 break;
         }