protected override IEnumerator InnerDoGroupAbility(Transform groupTransform) { ImpGroupAi impGroupAi = groupTransform.GetComponent <ImpGroupAi>(); CombatSystem hammerCombatSystem = _hammer.GetComponentInChildren <CombatSystem>(); while (impGroupAi.Target.GetTransformDistanceFromTarget(_hammer.transform) > data.MINDistanceBeforeAttack) { _hammer.transform.position = groupTransform.position + new Vector3(0f, 1f, 0f) + (_hammer.transform.position - impGroupAi.Target.Target.position).normalized; _hammer.transform.rotation = Quaternion.LookRotation((impGroupAi.Target.Target.position - _hammer.transform.position).normalized, Vector3.up); yield return(null); } hammerCombatSystem.StartAttack(data.AssociatedAttack.GetAttack()); float timer = 0f; while (timer <= data.ActivatedDuration) { _hammer.transform.position = groupTransform.position + new Vector3(0f, 1f, 0f) + (_hammer.transform.position - impGroupAi.Target.Target.position).normalized; _hammer.transform.rotation = Quaternion.LookRotation((impGroupAi.Target.Target.position - _hammer.transform.position).normalized, Vector3.up); yield return(null); timer += Time.deltaTime; } _hammer.transform.rotation = Quaternion.Euler(0f, 0f, 0f); }
private void Awake() { _impGroupAi = transform.root.GetComponent <ImpGroupAi>(); _groupManager = transform.root.GetComponent <GroupManager>(); _particles = GetComponentsInChildren <ParticleSystem>(); _audioSource = GetComponent <AudioSource>(); foreach (ParticleSystem p in _particles) { ParticleSystem.MainModule mainModule = p.main; mainModule.startColor = _groupManager.GroupColor; } }