瀏覽代碼

修复了落雷和感电特效的显示问题

HY-LSZNWIN10\Administrator 1 月之前
父節點
當前提交
fd63975a99

+ 2 - 1
ActionTowerDefense/Assets/Scripts/Characters/Enemy.cs

@@ -83,8 +83,9 @@ public class Enemy : MoveCharacter
         Init();
     }
 
-    public void OnDisable()
+    protected override void OnDisable()
     {
+        base.OnDisable();
         EnemyCreater.instance.OnEnemyRecycle(this);
     }
 

+ 20 - 18
ActionTowerDefense/Assets/Scripts/Characters/MoveCharacter.cs

@@ -90,24 +90,18 @@ public class MoveCharacter : Character
 
     [Header("冰冻效果")]
     public bool isFrozen = false;
-    //public float frozenTime;
     private float frozenTimer;
 
     [Header("感电效果")]
-    public float electrifyAttackSpeedScale = 0.6f;
-    public float electrifyMoveSpeedScale = 0.6f;
     public bool isElectrify = false;
-    //public float electrifyTime;
     private float electrifyTimer;
-    private GameObject electrifyEffect;
+    public GameObject electrifyEffect;
 
     [Header("灼烧效果")]
     public bool isOnFire = false;
     public int fireStacks;
     private float fireTimer;
-    //public float firerInterval = 0.5f;
     private float fireBuffTimer;
-    //public int fireDamage = 1;
     private GameObject fireEffect;
 
     public virtual void Awake()
@@ -131,10 +125,6 @@ public class MoveCharacter : Character
         mecanim.transform.localPosition = Vector3.zero;
         mecanim.transform.localRotation = Quaternion.Euler(Vector3.zero);
         platformRotZ = 0;
-        isFrozen = false;
-        ani.speed = 1;
-        if (fireEffect != null) fireEffect.SetActive(false);
-        if (electrifyEffect != null) electrifyEffect.SetActive(false);
     }
 
     //0:漂浮 1:正常 2:无敌
@@ -576,17 +566,15 @@ public class MoveCharacter : Character
     {
         if (!isElectrify)
         {
+            Debug.Log("挂上感电");
             isElectrify = true;
             ani.speed = GameManager.instance.attackSpeedScale;
             moveSpeedScale = GameManager.instance.moveSpeedScale;
             attributeStatus.AddVulnerable(GameManager.instance.vulnerableRate, GameManager.instance.electrifyTime);
             if (electrifyEffect == null)
             {
-                PoolManager.InstantiateAsync("Prefab/FX/ElectrifyEffect", transform.position + Vector3.up, Quaternion.identity, transform, obj =>
-                {
-                    electrifyEffect = obj;
-                    electrifyEffect.transform.localPosition = new Vector3(0, 0.8f, 0);
-                });
+                electrifyEffect = Instantiate(Resources.Load<GameObject>("Prefab/FX/ElectrifyEffect"), transform.position + Vector3.up, Quaternion.identity, transform);
+                electrifyEffect.transform.localPosition = new Vector3(0, 0.8f, 0);
             }
             else electrifyEffect.SetActive(true);
         }
@@ -596,7 +584,8 @@ public class MoveCharacter : Character
 
     private void LightningStrike()
     {
-        PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/FX/Effc_Fall_thunder"), transform.position, Quaternion.identity, transform);
+        CountDownDestory countDownDestory = PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/FX/Effc_Fall_thunder"), transform.position, Quaternion.identity, transform).AddComponent<CountDownDestory>();
+        countDownDestory.StartCountDown(1f);
         BeHit(GameManager.instance.thunderboltDamage);
         attributeStatus.AddWeak(1f);
     }
@@ -627,7 +616,7 @@ public class MoveCharacter : Character
             isOnFire = true;
             if (fireEffect == null)
             {
-                fireEffect = PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/FX/FireEffect"), transform.position, Quaternion.identity, transform);
+                fireEffect = Instantiate(Resources.Load<GameObject>("Prefab/FX/FireEffect"), transform.position, Quaternion.identity, transform);
                 fireEffect.transform.localPosition = new Vector3(0, 0.8f, 0);
             }
             else fireEffect.SetActive(true);
@@ -664,4 +653,17 @@ public class MoveCharacter : Character
         Debug.Log("爆炸");
     }
     #endregion
+
+    protected virtual void OnDisable()
+    {
+        isOnFire = false;
+        fireStacks = 0;
+        if (fireEffect != null) fireEffect.SetActive(false);
+        isFrozen = false;
+        isElectrify = false;
+        if (electrifyEffect != null) electrifyEffect.SetActive(false);
+        ani.speed = 1;
+        moveSpeedScale = 1f;
+        Debug.Log("失活");
+    }
 }

+ 34 - 0
ActionTowerDefense/Assets/Scripts/CountDownDestory.cs

@@ -0,0 +1,34 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class CountDownDestory : MonoBehaviour
+{
+    private bool isStart = false;
+    private float timer;
+
+    public void StartCountDown(float time)
+    {
+        timer = time;
+        isStart = true;
+    }
+
+    private void FixedUpdate()
+    {
+        if (isStart)
+        {
+            timer -= Time.fixedDeltaTime;
+            if(timer < 0)
+            {
+                gameObject.SetActive(false);
+                Destroy(this);
+            }
+        }
+    }
+
+    private void OnDisable()
+    {
+        gameObject.SetActive(false);
+        Destroy(this);
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/CountDownDestory.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 95f162cd664a1034981dac66d1ef1bd9
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: