Bladeren bron

修复大猪被打的报错

wgl 6 maanden geleden
bovenliggende
commit
61751bd7b5

+ 2 - 8
ActionTowerDefense/Assets/Scripts/Characters/AttributeStatus.cs

@@ -24,8 +24,6 @@ public class AttributeStatus : MonoBehaviour
 
     //behit参数
     [HideInInspector] public bool haveNewSpecialStates;
-    [HideInInspector] public AttackInfo attackInfo;
-    [HideInInspector] public Character attackFrom;
 
     [DisplayOnly] public SpecialState curSpecialStates = SpecialState.Null;
 
@@ -96,7 +94,7 @@ public class AttributeStatus : MonoBehaviour
         }
     }
 
-    public void AddSpecialState()
+    public void AddSpecialState(AttackInfo attackInfo, Character attackFrom)
     {
         if (!haveNewSpecialStates)
         {
@@ -257,21 +255,17 @@ public class AttributeStatus : MonoBehaviour
     }
 
     //判断优先级,ture为优先级高于当前控制
-    public bool PriorityOrder(SpecialState specialState, AttackInfo attackInfo, Character attackFrom)
+    public bool PriorityOrder(SpecialState specialState)
     {
         if (curSpecialStates != SpecialState.Null && curSpecialStates >= specialState)
         {
             curSpecialStates = specialState;
-            this.attackInfo = attackInfo;
-            this.attackFrom = attackFrom;
             haveNewSpecialStates = true;
             return true;
         }
         if (curSpecialStates == SpecialState.Null)
         {
             curSpecialStates = specialState;
-            this.attackInfo = attackInfo;
-            this.attackFrom = attackFrom;
             haveNewSpecialStates = true;
             return true;
         }

+ 9 - 5
ActionTowerDefense/Assets/Scripts/Characters/HitFeedbackSystem.cs

@@ -15,6 +15,8 @@ public class HitFeedbackSystem : MonoBehaviour
     private RigidbodyConstraints origRC;
     private Vector3 velocity;   //¶Ù֡ǰËÙ¶È
     [HideInInspector] public CharacterState curCharacterState;  //¶Ù֡ǰ״̬
+    [HideInInspector] public AttackInfo attackInfoData;
+    [HideInInspector] public Character attackFromData;
 
     [TabGroup("½©Ö±")] [DisplayOnly] public float hitStunTime;
     [HideInInspector] public bool canHitStun;
@@ -45,7 +47,7 @@ public class HitFeedbackSystem : MonoBehaviour
                     character.rb.velocity = velocity;
                     character.state = curCharacterState;
                 }
-                attributeStatus.AddSpecialState();
+                attributeStatus.AddSpecialState(attackInfoData, attackFromData);
             }
             freezeFrame -= 1;
         }
@@ -65,10 +67,12 @@ public class HitFeedbackSystem : MonoBehaviour
     }
 
     //¶ÙÖ¡
-    public void FreezeFrame()
+    public void FreezeFrame(AttackInfo attackInfo, Character attackFrom)
     {
         if (canFreeze)
         {
+            attackInfoData = attackInfo;
+            attackFromData = attackFrom;
             canFreeze = false;
             if (!isFreeze)
             {
@@ -83,17 +87,17 @@ public class HitFeedbackSystem : MonoBehaviour
         }
         else
         {
-            attributeStatus.AddSpecialState();
+            attributeStatus.AddSpecialState(attackInfo,attackFrom);
         }
     }
 
     //½©Ö±
-    public void EnterHitStun()
+    public void EnterHitStun(Character attackFrom)
     {
         if (canHitStun)
         {
             canHitStun = false;
-            float dir1 = attributeStatus.attackFrom.transform.position.x <= character.transform.position.x? 1:-1;
+            float dir1 = attackFrom.transform.position.x <= character.transform.position.x? 1:-1;
             float dir2 = character.bodyTrans.localScale.x >= 0? 1:-1;
             if(dir1 == dir2)
             {

+ 5 - 5
ActionTowerDefense/Assets/Scripts/Characters/MoveCharacter.cs

@@ -234,7 +234,7 @@ public class MoveCharacter : Character
                         {
                             break;
                         }
-                        attributeStatus.PriorityOrder(SpecialState.FloatState, attackInfo, attackFrom);
+                        attributeStatus.PriorityOrder(SpecialState.FloatState);
                         break;
                     //击飞
                     case AttackEffect.BlowUp:
@@ -244,7 +244,7 @@ public class MoveCharacter : Character
                         }
                         if (rb.useGravity)
                         {
-                            attributeStatus.PriorityOrder(SpecialState.BlownUp, attackInfo, attackFrom);
+                            attributeStatus.PriorityOrder(SpecialState.BlownUp);
                         }
                         break;
                     //击落
@@ -255,7 +255,7 @@ public class MoveCharacter : Character
                         }
                         if (!rb.useGravity)
                         {
-                            attributeStatus.PriorityOrder(SpecialState.ShotDown, attackInfo, attackFrom);
+                            attributeStatus.PriorityOrder(SpecialState.ShotDown);
                         }
                         break;
                     //击晕
@@ -264,7 +264,7 @@ public class MoveCharacter : Character
                         {
                             break;
                         }
-                        attributeStatus.PriorityOrder(SpecialState.Weak, attackInfo, attackFrom);
+                        attributeStatus.PriorityOrder(SpecialState.Weak);
                         break;
 
                     /*非控制*/
@@ -315,7 +315,7 @@ public class MoveCharacter : Character
         }
         
         //顿帧
-        hitFeedbackSystem.FreezeFrame();
+        hitFeedbackSystem.FreezeFrame(attackInfo, attackFrom);
     }
 
     //受到持续伤害