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);
        }
示例#2
0
    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;
        }
    }