| | |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | private Transform mat; |
| | |
| | | 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; |
| | |
| | | |
| | | GameObject affectorObj = transform.Find("Affector").gameObject; |
| | | AttackAffector attackAffector = affectorObj.GetComponent<AttackAffector>(); |
| | | fireRate = attackAffector.fireRate; |
| | | fireRate = attackAffector.FireRate; |
| | | |
| | | if (actionTimeArr[1] > 1 / fireRate) |
| | | { |
| | |
| | | |
| | | 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> |
| | |
| | | var attack = affector as AttackAffector; |
| | | if (attack != null && attack.damagerProjectile != null) |
| | | { |
| | | dps += attack.GetProjectileDamage() * attack.fireRate; |
| | | dps += attack.GetProjectileDamage() * attack.FireRate; |
| | | } |
| | | } |
| | | return dps; |
| | |
| | | /// <param name="isAttackMode"></param> |
| | | public void SetAttackState(bool isAttackMode) |
| | | { |
| | | Body.SetActive(!isAttackMode); |
| | | AttackBody.SetActive(isAttackMode); |
| | | ActionAnimator.enabled = isAttackMode; |
| | | if (isAttackMode) |
| | | { |
| | | AttackBody.SetActive(isAttackMode); |
| | | Body.SetActive(!isAttackMode); |
| | | ChangeState(TowerActionState.Attack); |
| | | } |
| | | else |
| | | { |
| | | ChangeState(TowerActionState.Standing); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |