浏览代码

释放黑伞时可以被攻击

SZAND\msx_2 2 月之前
父节点
当前提交
2385639334

+ 10 - 5
ActionTowerDefense/Assets/Scripts/Boss/Boss.cs

@@ -207,6 +207,12 @@ public class Boss : MoveCharacter
     {
     }
 
+    //攻击时被强制切换状态,清空所有遗留在外的技能
+    //如:水诡释放黑伞时被击晕,黑伞消失
+    public virtual void ClearAllSkills()
+    {
+    }
+
     //切换boss状态(主要针对受击状态等)
     public void ChangeBossState(BossState bs)
     {
@@ -246,10 +252,8 @@ public class Boss : MoveCharacter
         bossState = bs;
         switch (bs)
         {
-            case BossState.normal:
-                rb.velocity = Vector3.zero;
-                break;
             case BossState.weak:
+                ClearAllSkills();
                 ani.Play("fall", 0, 0);
                 rb.constraints = RigidbodyConstraints.FreezeRotation | RigidbodyConstraints.FreezePositionZ;
                 ChangeState(CharacterState.Idle);
@@ -258,10 +262,11 @@ public class Boss : MoveCharacter
                 rb.useGravity = true;
                 break;
             case BossState.rise:
+                int randomAni = RandomWithWeight(weight);
+                ani.Play(idleAniNames[randomAni], 0, 0);
+                rb.velocity = Vector3.zero;
                 flyHeight = Random.Range(minFlyHeight, maxFlyHeight);
                 break;
-            case BossState.invincible:
-                break;
         }
         ani.speed = 1;
     }

+ 5 - 1
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/WaterSprite.cs

@@ -80,7 +80,6 @@ public class WaterSprite : Boss
             case AttackMethods.Umbrella:
                 ani.Play("shoot");
                 attack.SkillBlackUmbrella();
-                ChangeBossState(BossState.invincible);
                 break;
             case AttackMethods.Hair:
                 ani.Play("roar");
@@ -92,6 +91,11 @@ public class WaterSprite : Boss
         }
     }
 
+    public override void ClearAllSkills()
+    {
+        attack.umbrellaInstance.SetActive(false);
+    }
+
     public override void OnAttack()
     {
         switch (curAttackType)

+ 2 - 1
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/WaterSpriteAttackController.cs

@@ -10,7 +10,8 @@ public class WaterSpriteAttackController : AttackController
 
     [Header("黑伞")]
     public GameObject umbrellaPrefab;       //预制体
-    private GameObject umbrellaInstance;    //实例化
+    [HideInInspector]
+    public GameObject umbrellaInstance;    //实例化
     private BlackUmbrella blackUmbrella;
     [LabelText("黑伞攻击初始位置")]
     public Transform umbrellaOrigPos;