From 40b918d5189a154bc0ff31627e69867742934720 Mon Sep 17 00:00:00 2001
From: chenxin <chenxin6991@163.com>
Date: Tue, 17 Nov 2020 21:10:05 +0800
Subject: [PATCH] buff补充

---
 Assets/Scripts/TowerDefense/Towers/TowerLevel.cs |   41 +++++++++++++++++++++++++----------------
 1 files changed, 25 insertions(+), 16 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Towers/TowerLevel.cs b/Assets/Scripts/TowerDefense/Towers/TowerLevel.cs
index 04bf714..8e6649f 100644
--- a/Assets/Scripts/TowerDefense/Towers/TowerLevel.cs
+++ b/Assets/Scripts/TowerDefense/Towers/TowerLevel.cs
@@ -195,15 +195,18 @@
             {
                 effect.Initialize(alignment, mask);
                 effect.towerPtr = tower;
+                AttackAffector attackAffector = effect.GetComponent<AttackAffector>();
+
+                if (attackAffector.projectile != null)
+                {
+                    Damager damager = attackAffector.projectile.gameObject.GetComponent<Damager>();
+                    damager.TowerAttributeId = tower.attributeId;
+                }
             }
             m_ParentTower = tower;
             Transform starTs = transform.Find("Star");
             starTs.localPosition = new Vector3(0, 0.2f, 0.6f);
             starTs.localRotation = Quaternion.Euler(60, 180, 0);
-
-            // Vector3 parentScale = transform.parent.transform.localScale;
-            // Vector3 tmpScale = new Vector3(0.72f, 0.5f, 0.5f);
-            // starTs.localScale = tmpScale * (6 / parentScale.x);
         }
 
         private Transform mat;
@@ -216,7 +219,10 @@
             mat = transform.Find("Cube");
             myRender = mat.GetComponent<MeshRenderer>();
             normalScale = new Vector3(1.5f, 1.5f, 1.5f);
+        }
 
+        private void Start()
+        {
             if (ActionAnimator != null)
             {
                 AnimationClip[] clips = ActionAnimator.runtimeAnimatorController.animationClips;
@@ -232,7 +238,7 @@
 
                 GameObject affectorObj = transform.Find("Affector").gameObject;
                 AttackAffector attackAffector = affectorObj.GetComponent<AttackAffector>();
-                fireRate = attackAffector.fireRate;
+                fireRate = attackAffector.FireRate;
 
                 if (actionTimeArr[1] > 1 / fireRate)
                 {
@@ -240,33 +246,36 @@
                     attackSpeed = actionTimeArr[1] * fireRate;
                 }
                 SetAttackState(false);
-
             }
         }
 
         public void LateUpdate()
         {
-            if (ActionAnimator != null && ActionAnimator.isActiveAndEnabled)
-            {
-                AnimatorStateInfo stateInfo = ActionAnimator.GetCurrentAnimatorStateInfo(0);
+            if (ActionAnimator == null || !ActionAnimator.isActiveAndEnabled) return;
 
-                if (ActionState == TowerActionState.Attack && stateInfo.normalizedTime >= 0.9f)
-                    ChangeState(TowerActionState.Standing);
-            }
+            AnimatorStateInfo stateInfo = ActionAnimator.GetCurrentAnimatorStateInfo(0);
+
+            if (ActionState == TowerActionState.Attack && stateInfo.normalizedTime >= 1f)
+                ChangeState(TowerActionState.Standing);
         }
 
         public void ChangeState(TowerActionState state)
         {
-            if (ActionAnimator == null || ActionState == state) return;
+            if (ActionAnimator == null || !ActionAnimator.isActiveAndEnabled) return;
 
             ActionState = state;
+
+            if (ActionState == TowerActionState.Attack && state == TowerActionState.Attack)
+            {
+                ActionAnimator.Update(0);
+                ActionAnimator.Play("Attack", 0, 0);
+            }
+            ActionAnimator.SetInteger(paramName, (int)state);
 
             if (state == TowerActionState.Attack)
                 ActionAnimator.speed = attackSpeed * FireSpeed;
             else if (state == TowerActionState.Standing)
                 ActionAnimator.speed = 1f;
-
-            ActionAnimator.SetInteger(paramName, (int)state);
         }
 
         /// <summary>
@@ -435,7 +444,7 @@
                 var attack = affector as AttackAffector;
                 if (attack != null && attack.damagerProjectile != null)
                 {
-                    dps += attack.GetProjectileDamage() * attack.fireRate;
+                    dps += attack.GetProjectileDamage() * attack.FireRate;
                 }
             }
             return dps;

--
Gitblit v1.9.1