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

修改刺客冲刺多段伤害bug

LAPTOP-OM1V99U2\永远de小亡灵 1 жил өмнө
parent
commit
f4c3170f9c

+ 3 - 5
ActionTowerDefense/Assets/Resources/Prefab/ESpirits_Assassin.prefab

@@ -278,6 +278,7 @@ MonoBehaviour:
   rope: {fileID: 0}
   hasHpUp: 0
   beLarger: 0
+  canMove: 1
   foot: {fileID: 2437299196663985756}
   extraRiseGravity: -28.8
   extraFallGravity: -14.4
@@ -831,8 +832,8 @@ BoxCollider:
   m_IsTrigger: 1
   m_Enabled: 1
   serializedVersion: 2
-  m_Size: {x: 2.5, y: 3.11, z: 1}
-  m_Center: {x: -1.5, y: 1, z: 0}
+  m_Size: {x: 4.02, y: 2.21, z: 1}
+  m_Center: {x: -0, y: 1, z: 0}
 --- !u!54 &8257178686841521685
 Rigidbody:
   m_ObjectHideFlags: 0
@@ -863,8 +864,6 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   canHit: 0
   isEnemy: 1
-  isDash: 0
-  isDashAttack: 0
   attackInfo:
     damage: 0
     attackDir: {x: 0, y: 0, z: 0}
@@ -872,7 +871,6 @@ MonoBehaviour:
     changeHurt: 0
     repelValue: 0
   beHitTriggers: []
-  enemy: []
   offset: 2
   rushEffect: {fileID: 7473170563405908938, guid: 8ad3c225050205945b10657aa300afd6, type: 3}
   targetY: 1

+ 4 - 6
ActionTowerDefense/Assets/Resources/Prefab/Spirits_Assassin.prefab

@@ -277,6 +277,7 @@ MonoBehaviour:
   - {fileID: 2100000, guid: eb0e26c1a9cf9a14799273e742b98d21, type: 2}
   id: 0
   costMp: 1
+  totalSummonTime: 0.5
   searchState: 0
   attackDistance: 1.5
   canFly: 0
@@ -816,8 +817,8 @@ BoxCollider:
   m_IsTrigger: 1
   m_Enabled: 1
   serializedVersion: 2
-  m_Size: {x: 2.5, y: 2, z: 1}
-  m_Center: {x: -1.5, y: 1, z: 0}
+  m_Size: {x: 4.99, y: 2, z: 1}
+  m_Center: {x: 0.01, y: 1, z: 0}
 --- !u!114 &5670168015807601097
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -830,10 +831,8 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 028d37216b47ca446ba0037910919e25, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  canHit: 0
+  canHit: 1
   isEnemy: 0
-  isDash: 0
-  isDashAttack: 0
   attackInfo:
     damage: 0
     attackDir: {x: 0, y: 0, z: 0}
@@ -841,7 +840,6 @@ MonoBehaviour:
     changeHurt: 0
     repelValue: 0
   beHitTriggers: []
-  enemy: []
   offset: 2
   rushEffect: {fileID: 7473170563405908938, guid: 8ad3c225050205945b10657aa300afd6, type: 3}
   targetY: 1

+ 17 - 51
ActionTowerDefense/Assets/Scripts/Spirits/DashEffect.cs

@@ -7,11 +7,8 @@ public class DashEffect : MonoBehaviour
 {
     public bool canHit;
     public bool isEnemy;
-    public bool isDash;
-    public bool isDashAttack;
     public AttackInfo attackInfo;
     public List<Character> beHitTriggers = new List<Character>();
-    public List<GameObject> enemy = new List<GameObject>();
     public float offset;
     public GameObject rushEffect;
     public float targetY;
@@ -29,77 +26,46 @@ public class DashEffect : MonoBehaviour
     }
     private void Update()
     {
-
-
         if (canHit)
         {
-
-            transform.gameObject.SetActive(false);
+            for (int i = 0; i < beHitTriggers.Count; i++)
+            {
+                DashAttack(beHitTriggers[i]);
+            }
+            beHitTriggers = new List<Character>();
         }
     }
-    //private void Update()
-    //{
-    //    if (canHit)
-    //    {
-    //        for (int i = 0; i < beHitTriggers.Count; i++)
-    //        {
-    //            beHitTriggers[i].BeHit(damage, force, changeHurt, repelValue);
-    //        }
-
-    //        transform.parent.gameObject.SetActive(false);
-    //    }
-    //    else
-    //    {
-
-    //        for (int i = 0; i < enemy.Count; i++)
-    //        {
-
-    //            enemy[i].transform.position = transform.position + Vector3.right * offset;
-    //        }
-    //    }
-    //}
-    //private void OnTriggerStay(Collider other)
-    //{
-    //    if (isDash)
-    //    {
-    //        if (isEnemy && (other.gameObject.layer == 6 || other.gameObject.layer == 7)
-    //            && other.name == "BodyCollider")
-    //        {
-    //            Character character = other.GetComponentInParent<Character>();
-    //            DashAttack(character);
-    //        }
-    //        isDash = false;
-    //    }
-    //}
     private void OnTriggerEnter(Collider other)
     {
         
         if(!isEnemy && other.gameObject.layer == 8 && other.name == "BodyCollider")
         {
             Character character = other.GetComponentInParent<Character>();
-            beHitTriggers.Add(character);
-            //enemy.Add(other.transform.parent.parent.parent.gameObject);
-            DashAttack(character);
+            if (!beHitTriggers.Exists(t => t == character))
+            {
+                beHitTriggers.Add(character);
+            }
         }
         if (isEnemy && (other.gameObject.layer == 6|| other.gameObject.layer == 7)
             && other.name == "BodyCollider")
         {
             Character character = other.GetComponentInParent<Character>();
-            //beHitTriggers.Add(character);
-            //enemy.Add(other.transform.parent.parent.parent.gameObject);
-            if (isDashAttack)
+            if(!beHitTriggers.Exists(t => t == character))
             {
-                DashAttack(character);
+                beHitTriggers.Add(character);
             }
-            
         }
     }
     private void OnTriggerExit(Collider other)
     {
         if (other.gameObject.layer == 8 && other.name == "BodyCollider")
         {
-            beHitTriggers.Remove(other.GetComponentInParent<Character>());
-            //enemy.Add(other.transform.parent.parent.parent.gameObject);
+            Character character = other.GetComponentInParent<Character>();
+            if (beHitTriggers.Exists(t => t == character))
+            {
+                beHitTriggers.Remove(character);
+            }
+            
         }
     }
     public void DashAttack(Character character)

+ 5 - 5
ActionTowerDefense/Assets/Scripts/Spirits/ESpirits_Assassin.cs

@@ -105,9 +105,8 @@ public class ESpirits_Assassin : MonoBehaviour
                     transform.position + Vector3.up);
                 if (time >= readyCD)
                 {
-                    
-                    dashEffect.isDash = true;
-                    dashEffect.isDashAttack = true;
+
+                    dashEffect.canHit = true;
                     targetDir =
                         (character - transform.position).normalized;
                     enemy.ani.Play("attack_summon", 0, 0);
@@ -125,6 +124,7 @@ public class ESpirits_Assassin : MonoBehaviour
                 {
                     rb.velocity = Vector3.zero;
                     time = 0;
+                    dashEffect.canHit = false;
                     if (enemy.foot.TrigGround)
                     {
 
@@ -151,6 +151,7 @@ public class ESpirits_Assassin : MonoBehaviour
                         RigidbodyConstraints.FreezePositionZ | RigidbodyConstraints.FreezeRotation;
                     targetDir = Vector3.down;
                     enemy.ani.Play("attack_summon", 0, 0);
+                    dashEffect.canHit = true;
                     state = AssassinState.Down;
                 }
                 break;
@@ -169,6 +170,7 @@ public class ESpirits_Assassin : MonoBehaviour
                 {
                     transform.position = new Vector3(transform.position.x, -1, 0);
                     body.transform.rotation = Quaternion.Euler(Vector3.zero);
+                    dashEffect.canHit = false;
                     state = AssassinState.Finish;
 
                 }
@@ -177,8 +179,6 @@ public class ESpirits_Assassin : MonoBehaviour
                 time += Time.deltaTime;
                 if(time > finishTime)
                 {
-                    dashEffect.isDashAttack = false;
-                    enemy.isSpiritsAttack = false;
                     enemy.searchState = SearchState.NoTarget;
                     enemy.ChangeState(CharacterState.Idle);
                     state = AssassinState.Normal;

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Spirits/Spirits_Dash.cs

@@ -23,7 +23,7 @@ public class Spirits_Dash : MonoBehaviour
             if(time >= dashTime)
             {
                 DashAttackEffect();
-                dashEffect.canHit = true;
+                dashEffect.canHit = false;
                 demonic.ChangeState(CharacterState.Fall);
                 this.enabled = false;