Эх сурвалжийг харах

修复其他攻击会影响顿帧击飞问题

wgl 6 сар өмнө
parent
commit
30e324632b

+ 32 - 24
ActionTowerDefense/Assets/Scripts/Characters/AttributeStatus.cs

@@ -24,6 +24,7 @@ public class AttributeStatus : MonoBehaviour
 
     //behit参数
     [DisplayOnly] public bool canChangeHitStun;
+    [DisplayOnly] public bool haveSpecialStates;
     [DisplayOnly] public SpecialState curSpecialStates = SpecialState.Null;
 
     [LabelText("控制时间")] [DisplayOnly] public float attributeTime;
@@ -101,33 +102,38 @@ public class AttributeStatus : MonoBehaviour
             hitFeedbackSystem.EnterHitStun(attackFrom);
             return;
         }
-        hitFeedbackSystem.canHitStun = false;
-        switch (curSpecialStates)
+        if (haveSpecialStates)
         {
-            case SpecialState.FloatState:
-                AddFloat(attackInfo.floatState);
-                break;
-            case SpecialState.BlownUp:
-                if (rb.useGravity)
-                {
-                    AddBlowUp(attackInfo.blowUp, attackFrom.bodyTrans.localScale.x < 0 ? -1 : 1);
-                    //虾兵特殊攻击先留着
-                    //AddBlowUp(attackInfo.blowUp, attackFrom.transform.position.x < character.transform.position.x ? -1 : 1);
-                }
-                break;
-            case SpecialState.ShotDown:
-                if (!rb.useGravity)
-                {
-                    AddShotDown(attackInfo.shotDown, attackFrom.bodyTrans.localScale.x < 0 ? -1 : 1);
-                    //虾兵特殊攻击先留着
-                    //AddShotDown(attackInfo.shotDown, attackFrom.transform.position.x < character.transform.position.x ? -1 : 1);
-                }
-                break;
-            case SpecialState.Weak:
-                AddWeak(attackInfo.weak);
-                break;
+            haveSpecialStates = false;
+            hitFeedbackSystem.canHitStun = false;
+            switch (curSpecialStates)
+            {
+                case SpecialState.FloatState:
+                    AddFloat(attackInfo.floatState);
+                    break;
+                case SpecialState.BlownUp:
+                    if (rb.useGravity)
+                    {
+                        AddBlowUp(attackInfo.blowUp, attackFrom.bodyTrans.localScale.x < 0 ? -1 : 1);
+                        //虾兵特殊攻击先留着
+                        //AddBlowUp(attackInfo.blowUp, attackFrom.transform.position.x < character.transform.position.x ? -1 : 1);
+                    }
+                    break;
+                case SpecialState.ShotDown:
+                    if (!rb.useGravity)
+                    {
+                        AddShotDown(attackInfo.shotDown, attackFrom.bodyTrans.localScale.x < 0 ? -1 : 1);
+                        //虾兵特殊攻击先留着
+                        //AddShotDown(attackInfo.shotDown, attackFrom.transform.position.x < character.transform.position.x ? -1 : 1);
+                    }
+                    break;
+                case SpecialState.Weak:
+                    AddWeak(attackInfo.weak);
+                    break;
+            }
         }
 
+
     }
 
     //CharacterState为SpecialStatus时调用此函数
@@ -264,6 +270,7 @@ public class AttributeStatus : MonoBehaviour
         if (curSpecialStates == SpecialState.Null)
         {
             curSpecialStates = specialState;
+            haveSpecialStates = true;
             return true;
         }
         else
@@ -271,6 +278,7 @@ public class AttributeStatus : MonoBehaviour
             if (curSpecialStates >= specialState)
             {
                 curSpecialStates = specialState;
+                haveSpecialStates = true;
                 return true;
             }
             else