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