Bläddra i källkod

闪白逻辑2.0

SZAND\msx_2 2 månader sedan
förälder
incheckning
36360a5905

+ 8 - 0
ActionTowerDefense/Assets/Scripts/Boss/Boss.cs

@@ -103,6 +103,14 @@ public class Boss : MoveCharacter
         {
             ani = GetComponentInChildren<Animator>();
         }
+        if (!mecanim)
+        {
+            mecanim = GetComponentInChildren<SkeletonMecanim>();
+        }
+        if (!meshRenderer)
+        {
+            meshRenderer = mecanim.GetComponent<MeshRenderer>();
+        }
 
         //Íæ¼Ò
         pc = PlayersInput.instance[0];

+ 27 - 10
ActionTowerDefense/Assets/Scripts/Characters/BeHitTrigger.cs

@@ -17,11 +17,24 @@ public class BeHitTrigger : MonoBehaviour
     private bool isWhite;
     private float white;
 
+    public List<Material> mats;
+
     private void Awake()
     {
         owner = GetComponentInParent<Character>();
+        mats = new List<Material>();
     }
 
+    private void CountTurnWhiteMaterials()
+    {
+        foreach (Material m in owner.meshRenderer.materials)
+        {
+            if (m.shader.name.Contains("Fill"))
+            {
+                mats.Add(m);
+            }
+        }
+    }
     public void BeHit(int damage)
     {
         owner.BeHit(damage);
@@ -38,20 +51,21 @@ public class BeHitTrigger : MonoBehaviour
         //敌方士兵受到起手式伤害/我方士兵受到伤害
         if (isDemSummon || owner.GetComponent<Demonic>())
         {
-            try
-            {
-                TurnWhite();
-            }
-            catch
-            {
-            }
+            TurnWhite();
         }
     }
 
     private void TurnWhite()
     {
-        owner.meshRenderer.material.SetFloat("_FillPhase", 0.6f);
-        Invoke("TurnOrigColor", 0.1f);
+        if (mats.Count == 0)
+        {
+            CountTurnWhiteMaterials();
+        }
+        foreach(Material m in mats)
+        {
+            m.SetFloat("_FillPhase", 0.6f);
+            Invoke("TurnOrigColor", 0.1f);
+        }
     }
 
     private void TurnOrigColor()
@@ -65,7 +79,10 @@ public class BeHitTrigger : MonoBehaviour
         if (isWhite)
         {
             white -= 4f * Time.deltaTime;
-            owner.meshRenderer.material.SetFloat("_FillPhase", white);
+            foreach(Material m in mats)
+            {
+                m.SetFloat("_FillPhase", white);
+            }
             if (white <= 0)
             {
                 isWhite = false;