From 841b66ef416a727a0c798ad2263b098247cb4aa7 Mon Sep 17 00:00:00 2001
From: chenxin <chenxin6991@163.com>
Date: Fri, 27 Nov 2020 12:00:16 +0800
Subject: [PATCH] buff预览暂停

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

diff --git a/Assets/Scripts/TowerDefense/Towers/TowerLevel.cs b/Assets/Scripts/TowerDefense/Towers/TowerLevel.cs
index 04bf714..35b5bcc 100644
--- a/Assets/Scripts/TowerDefense/Towers/TowerLevel.cs
+++ b/Assets/Scripts/TowerDefense/Towers/TowerLevel.cs
@@ -66,6 +66,11 @@
         public GameObject AttackBody;
 
         /// <summary>
+        /// 可以放置的材质
+        /// </summary>
+        public MeshRenderer canPlaceMesh;
+
+        /// <summary>
         /// 精灵塔动作状态
         /// </summary>
         public TowerActionState ActionState { get; protected set; }
@@ -195,15 +200,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 +224,11 @@
             mat = transform.Find("Cube");
             myRender = mat.GetComponent<MeshRenderer>();
             normalScale = new Vector3(1.5f, 1.5f, 1.5f);
+            canPlaceMesh.enabled = false;
+        }
 
+        private void Start()
+        {
             if (ActionAnimator != null)
             {
                 AnimationClip[] clips = ActionAnimator.runtimeAnimatorController.animationClips;
@@ -232,7 +244,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 +252,46 @@
                     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);
         }
 
+        /// <summary>
+        /// 设置可以放置
+        /// </summary>
+        /// <param name="isOn"></param>
+        public void SetCanPlace(bool isOn)
+        {
+            if (canPlaceMesh.enabled != isOn)
+                canPlaceMesh.enabled = isOn;
+        }
+        
         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 +460,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