Przeglądaj źródła

增加现在玩家冲刺碰撞墙体会停止冲刺,修改伞的攻击逻辑,在stay状态下最后0.3s会停止跟随玩家并显示提示UI

HY-LSZNWIN10\Administrator 5 dni temu
rodzic
commit
76a9fa0a5b

+ 2 - 2
ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/Boss_Umbrella.prefab

@@ -10238,8 +10238,8 @@ MonoBehaviour:
   maxTime: 5
   initialSpeed: 60
   appearTime: 0.005
-  stayTime: 2
-  backTime: 1.5
+  stayTime: 1.7
+  attentionyTime: 0.3
   disappearTime: 0.2
   effect: {fileID: 7473170563405908938, guid: 8d195dec6a5551844ba6e4a0a4af3b59, type: 3}
   initialTransparency: 0.2

+ 18 - 7
ActionTowerDefense/Assets/Resources/Prefab/Player.prefab

@@ -5551,7 +5551,7 @@ BoxCollider:
   m_Enabled: 1
   serializedVersion: 2
   m_Size: {x: 0.3052922, y: 1.1363995, z: 1}
-  m_Center: {x: 0.019768089, y: -0.4175309, z: 0}
+  m_Center: {x: -0.2, y: -0.4175309, z: 0}
 --- !u!114 &6725358484711746229
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -5726,7 +5726,6 @@ MonoBehaviour:
   toLargeSize: 0
   cookEffect: {fileID: 0}
   Attack_summonShootCanTransmit: 0
-  debugAttackFrom: 0
   charactertag: 0
   hitResistance: 100
   bc: {fileID: 0}
@@ -5988,7 +5987,9 @@ MonoBehaviour:
       criticalChance: 0
       criticalStrikeEffect: 0
       lifesteal: 0
-      effect: {fileID: 0}
+      attackOnEffect: {fileID: 0}
+      attackOnEffectPos: {fileID: 0}
+      hitEffect: {fileID: 0}
       attackEffect: 
       attackMethod_Type: 0
       floatState:
@@ -6225,7 +6226,9 @@ MonoBehaviour:
       criticalChance: 0
       criticalStrikeEffect: 0
       lifesteal: 0
-      effect: {fileID: 0}
+      attackOnEffect: {fileID: 0}
+      attackOnEffectPos: {fileID: 0}
+      hitEffect: {fileID: 0}
       attackEffect: 01000000
       attackMethod_Type: 0
       floatState:
@@ -6590,6 +6593,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 1d04dd6e35d71724689001e450625c39, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+  character: {fileID: 0}
   curSpecialStates: -1
   attackMethod:
     attackName: 
@@ -6601,7 +6605,9 @@ MonoBehaviour:
       criticalChance: 0
       criticalStrikeEffect: 0
       lifesteal: 0
-      effect: {fileID: 0}
+      attackOnEffect: {fileID: 0}
+      attackOnEffectPos: {fileID: 0}
+      hitEffect: {fileID: 0}
       attackEffect: 
       attackMethod_Type: 0
       floatState:
@@ -6666,6 +6672,7 @@ MonoBehaviour:
   hitState: 0
   isFly: 0
   jumpNum: 0
+  blowUpDamageRate: 1
   jumpNumRate: 0.9
   decelerationRatioX: 2
   decelerationRatioY: 15
@@ -6716,7 +6723,9 @@ MonoBehaviour:
       criticalChance: 0
       criticalStrikeEffect: 0
       lifesteal: 0
-      effect: {fileID: 0}
+      attackOnEffect: {fileID: 0}
+      attackOnEffectPos: {fileID: 0}
+      hitEffect: {fileID: 0}
       attackEffect: 
       attackMethod_Type: 0
       floatState:
@@ -7134,7 +7143,9 @@ MonoBehaviour:
       criticalChance: 0
       criticalStrikeEffect: 0
       lifesteal: 0
-      effect: {fileID: 0}
+      attackOnEffect: {fileID: 0}
+      attackOnEffectPos: {fileID: 0}
+      hitEffect: {fileID: 0}
       attackEffect: 
       attackMethod_Type: 0
       floatState:

+ 30 - 0
ActionTowerDefense/Assets/Scenes/Game.unity

@@ -11649,6 +11649,7 @@ GameObject:
   - component: {fileID: 744688366}
   - component: {fileID: 744688365}
   - component: {fileID: 744688364}
+  - component: {fileID: 744688368}
   m_Layer: 3
   m_Name: Cube (1)
   m_TagString: Untagged
@@ -11734,6 +11735,20 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 19
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &744688368
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 744688363}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 7b90673e1c509ba41be19e00359e91ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  totalNum: 10000
+  wallTriggers: []
 --- !u!1 &790432810
 GameObject:
   m_ObjectHideFlags: 0
@@ -16943,6 +16958,7 @@ GameObject:
   - component: {fileID: 1060160319}
   - component: {fileID: 1060160318}
   - component: {fileID: 1060160317}
+  - component: {fileID: 1060160321}
   m_Layer: 3
   m_Name: Cube
   m_TagString: Untagged
@@ -17028,6 +17044,20 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 18
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1060160321
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1060160316}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 7b90673e1c509ba41be19e00359e91ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  totalNum: 10000
+  wallTriggers: []
 --- !u!4 &1079295322 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 8077449060965017007, guid: 8f38420ea6472ad41b71c9ea20aa1683, type: 3}

+ 32 - 21
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/BlackUmbrella.cs

@@ -50,9 +50,11 @@ public class BlackUmbrella : MonoBehaviour
     public float appearTime;
     [LabelText("黑伞停留时长")]
     public float stayTime;
-    [LabelText("黑伞收回时长")]
-    public float backTime;
-    private bool hasBackAni;
+    [LabelText("黑伞冲刺前提示时长")]
+    public float attentionyTime;
+    //[LabelText("黑伞收回时长")]
+    //public float backTime;
+    //private bool hasBackAni;
     [LabelText("黑伞消失时长")]
     public float disappearTime;
     [LabelText("黑伞位置提示特效")]
@@ -119,6 +121,8 @@ public class BlackUmbrella : MonoBehaviour
                     {
                         fx = -1;
                     }
+                    string dir = fx > 0 ? "右边" : "左边";
+                    Debug.Log("攻击方向为" + dir);
                     aimPos.x += farFromPlayerDis * fx;
                     attackDis = Mathf.Abs(aimPos.x - transform.position.x);
                 }
@@ -133,6 +137,11 @@ public class BlackUmbrella : MonoBehaviour
                 break;
             case UmbrellaState.stay:
                 aimPos.y = pc.bodyTrans.position.y;
+                allTime--;
+                if (allTime < 0)
+                {
+                    ChangeUmbrellaState(UmbrellaState.back);
+                }
                 break;
             case UmbrellaState.back:
                 OnBack?.Invoke();
@@ -167,21 +176,19 @@ public class BlackUmbrella : MonoBehaviour
                 }
                 break;
             case UmbrellaState.stay:
-                aimPos.y = pc.bodyTrans.position.y;
-                transform.position = Vector3.MoveTowards(transform.position, aimPos, 9f * Time.deltaTime);
-                if (umbrePastTime >= stayTime)
+                if (umbrePastTime > stayTime + attentionyTime)
                 {
-                    transform.position = aimPos;
                     umbrePastTime = 0;
-                    allTime--;
-                    if (allTime > 0)
-                    {
-                        ChangeUmbrellaState(UmbrellaState.sprint);
-                    }
-                    else
-                    {
-                        ChangeUmbrellaState(UmbrellaState.back);
-                    }
+                    ChangeUmbrellaState(UmbrellaState.sprint);
+                }
+                else if(umbrePastTime > stayTime)
+                {
+                    transform.position = aimPos;
+                }
+                else
+                {
+                    aimPos.y = pc.bodyTrans.position.y;
+                    transform.position = Vector3.MoveTowards(transform.position, aimPos, 9f * Time.deltaTime);                    
                 }
                 break;
             case UmbrellaState.back:
@@ -254,17 +261,21 @@ public class BlackUmbrella : MonoBehaviour
             effectInsSr.color = color;
         }
 
+        //bool isAboutToAttack = umbrellaState == UmbrellaState.stay
+        //               && allTime > 0
+        //               && (stayTime - umbrePastTime) <= 1f;
+
         bool isAboutToAttack = umbrellaState == UmbrellaState.stay
-                       && allTime > 0
-                       && (stayTime - umbrePastTime) <= 1f;
+               && allTime > -1
+               && (umbrePastTime - stayTime)> 0;
 
-        if (!IsTargetVisible(gameObject))
+        if (!IsTargetVisible(gameObject) && umbrellaState == UmbrellaState.stay)
         {
             if (isAboutToAttack)
             {
                 // 剩余时间在0-1秒之间,计算透明度(0.5 -> 1.0)
-                float remainingTime = stayTime - umbrePastTime;
-                float alpha = Mathf.Lerp(1.0f, initialTransparency, remainingTime); // 时间越少透明度越高
+                float remainingTime = umbrePastTime - stayTime;
+                float alpha = Mathf.Lerp(initialTransparency, 1f , remainingTime * 1/ attentionyTime); // 时间越少透明度越高
                 var color = effectInsSr.color;
                 color.a = alpha;
                 effectInsSr.color = color;

+ 2 - 2
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/WaterSprite.cs

@@ -196,7 +196,7 @@ public class WaterSprite : Boss
         {
             return;
         }
-        Debug.Log("´Ó" + state + "Çл»µ½" + newState);
+        //Debug.Log("´Ó" + state + "Çл»µ½" + newState);
         switch (state)
         {
             case CharacterState.Run:
@@ -216,7 +216,7 @@ public class WaterSprite : Boss
                 {
                     if (isHoldingUmbre)
                     {
-                        Debug.Log(222);
+                        //Debug.Log(222);
                         int randomAni = RandomWithWeight(weight);
                         ani.Play(idleAniNames[randomAni], 0, 0);
                     }

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Characters/PlayerController.cs

@@ -1105,7 +1105,7 @@ public class PlayerController : MoveCharacter
                 rb.velocity = rushDir * rushSpeed;
                 break;
             case CharacterState.Sprint:
-                if (!btnRushKeep)
+                if (!btnRushKeep || wallTrigger.TrigWall)
                 {
                     if (CheckPlayerChangeState(CharacterState.Sprint))
                     {