LAPTOP-OM1V99U2\永远de小亡灵 há 9 meses atrás
pai
commit
3895c5c115
1 ficheiros alterados com 17 adições e 23 exclusões
  1. 17 23
      ActionTowerDefense/Assets/Scripts/PlayerController.cs

+ 17 - 23
ActionTowerDefense/Assets/Scripts/PlayerController.cs

@@ -118,8 +118,11 @@ public class PlayerController : MoveCharacter
     public float maxFlyHeight;
 
     [Header("召唤属性")]
+    [HideInInspector]
     public float cacheDir;  //召唤的时候按左右召唤结束不会响应手感不好,缓存一下,召唤后摇期间有左右响应的话会转向
     [HideInInspector]
+    public bool cacheRush; //召唤的时候按冲刺结束不会响应手感不好,缓存一下,召唤后摇期间按下冲刺的话会冲刺
+    [HideInInspector]
     public float summonTime;
     [HideInInspector]
     public float cacheSummonTime; //无法召唤时按下召唤键不会召唤,手感不好,缓存几帧,在这几帧内落地会立即召唤;
@@ -1016,10 +1019,11 @@ public class PlayerController : MoveCharacter
                     return true;
                 }
             }
-            if ((btnRushPress || cacheRushTime > 0) && mp >= rushCostMp)
+            if ((btnRushPress || cacheRushTime > 0 || cacheRush) && mp >= rushCostMp)
             {
                 if (excludeState != CharacterState.Rush)
                 {
+                    cacheRush = false;
                     ChangeState(CharacterState.Rush);
                     return true;
                 }
@@ -1067,10 +1071,11 @@ public class PlayerController : MoveCharacter
                     return true;
                 }
             }
-            if ((btnRushPress || cacheRushTime > 0) && mp >= rushCostMp)
+            if ((btnRushPress || cacheRushTime > 0 || cacheRush) && mp >= rushCostMp )
             {
                 if (excludeState != CharacterState.Rush)
                 {
+                    cacheRush = false;
                     ChangeState(CharacterState.Rush);
                     return true;
                 }
@@ -1518,6 +1523,14 @@ public class PlayerController : MoveCharacter
                 }
                 break;
             case CharacterState.Summon:
+                if (leftDir.x > 0.3f || leftDir.x < -0.3f)
+                {
+                    cacheDir = leftDir.x;
+                }
+                if (LBisHold)
+                {
+                    cacheRush = true;
+                }
                 if (summonTime <= 0 || btnTransfiguratePress)
                 {
                     if (CheckPlayerChangeState())
@@ -1526,10 +1539,7 @@ public class PlayerController : MoveCharacter
                     }
                 }
                 rb.linearVelocity = Vector3.right * velocityAddition;
-                if (leftDir.x > 0.3f || leftDir.x < -0.3f)
-                {
-                    cacheDir = leftDir.x;
-                }
+
                 break;
             case CharacterState.Rush:
                 if (rushTime <= 0)
@@ -1561,10 +1571,6 @@ public class PlayerController : MoveCharacter
                 //    rushDir = leftDir.normalized;
                 //}
                 rb.linearVelocity = rushDir * rushSpeed;
-                if (leftDir.x > 0.3f || leftDir.x < -0.3f)
-                {
-                    cacheDir = leftDir.x;
-                }
                 break;
             case CharacterState.Sprint:
                 if (!btnRushKeep)
@@ -1871,18 +1877,6 @@ public class PlayerController : MoveCharacter
                 break;
             case CharacterState.Rush:
                 velocity = Vector3.zero;
-                if (cacheDir != 0)
-                {
-                    if (cacheDir > 0.3f && bodyTrans.localScale.x > 0)
-                    {
-                        Turn();
-                    }
-                    else if (cacheDir < -0.3f && bodyTrans.localScale.x < 0)
-                    {
-                        Turn();
-                    }
-                    cacheDir = 0;
-                }
                 break;
             case CharacterState.Sprint:
                 velocity = Vector3.zero;
@@ -1962,6 +1956,7 @@ public class PlayerController : MoveCharacter
                 velocity = Vector3.right * velocityAddition;
                 rb.isKinematic = true;
                 cacheDir = 0;
+                cacheRush = false;
                 break;
             case CharacterState.Transfiguration:
                 aniCollider.Play("Transfiguration", 0, 0);
@@ -2000,7 +1995,6 @@ public class PlayerController : MoveCharacter
                 velocity = rushDir * rushSpeed;
                 mp -= rushCostMp;
                 uiMp.Show(mp, totalMp);
-                cacheDir = 0;
                 break;
             case CharacterState.Sprint:
                 aniCollider.Play("Sprint", 0, 0);