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

盔甲武士原速刹车;攻击时候修改抗击打值

1243896040 1 долоо хоног өмнө
parent
commit
1c9ec1ca21

+ 12 - 7
ActionTowerDefense/Assets/Scripts/Spirits/ESpirits_ArmoredSamurai.cs

@@ -8,7 +8,7 @@ public class ESpirits_ArmoredSamurai : Enemy
     [Space(30)]
     [Title("ESpirits_ArmoredSamurai属性")]
     [LabelText("最小冲刺时间")] public float minDashTime;
-    public AnimationCurve brakeCurve = AnimationCurve.EaseInOut(0, 1, 1, 0); // 刹车曲线
+    [LabelText("攻击时抗击打值")] public int attackHitResistance;
 
     private PlayerController player;
     public float time;
@@ -16,6 +16,7 @@ public class ESpirits_ArmoredSamurai : Enemy
     private float brakeTimer = 0f;
     public float brakeDuration;
     private Vector3 originalVelocity;
+    private int originalHitResistance;
     public override void Init()
     {
         base.Init();
@@ -28,6 +29,7 @@ public class ESpirits_ArmoredSamurai : Enemy
                 brakeDuration = sak.keys[0].startKeyTime;
             }
         }
+        originalHitResistance = hitResistance;
     }
 
     public override void OnState()
@@ -98,6 +100,7 @@ public class ESpirits_ArmoredSamurai : Enemy
                         ChooseLockingTarget();
                         CheckTurn(player.transform.position.x - transform.position.x);
                         time = 0;
+                        hitResistance = originalHitResistance;
                         break;
                     case CharacterState.Die:
                         break;
@@ -112,6 +115,12 @@ public class ESpirits_ArmoredSamurai : Enemy
                 isBraking = true;
                 brakeTimer = 0f;
                 originalVelocity = rb.velocity;
+                hitResistance = attackHitResistance;
+                if (state == CharacterState.Run)
+                {
+                    state = newState;
+                    return;
+                }
                 break;
         }
         base.ChangeState(newState);
@@ -158,17 +167,13 @@ public class ESpirits_ArmoredSamurai : Enemy
     void HandleBraking()
     {
         brakeTimer += Time.deltaTime;
-        float progress = brakeTimer / brakeDuration;
 
-        if (progress >= 1f)
+        if (brakeTimer >= brakeDuration)
         {
             isBraking = false;
             rb.velocity = Vector3.zero;
             return;
         }
-
-        // 使用曲线控制刹车力度
-        float brakeStrength = brakeCurve.Evaluate(progress);
-        rb.velocity = originalVelocity * brakeStrength;
+        rb.velocity = originalVelocity ;
     }
 }