Exemplo n.º 1
0
        private void OnDamageHitReceived(Attack arg1, CombatSystem arg2, Vector3 arg3)
        {
            if (!arg1.GetData().DealsStun)
            {
                return;
            }

            StartStun(arg1.GetData().StunTime);
        }
Exemplo n.º 2
0
        private void OnDamageHitReceived(Attack attack, CombatSystem attackerCombatSystem, Vector3 contactPoint)
        {
            if (!_knockbackLock.CanDoAction())
            {
                return;
            }

            if (attack.GetData().DealsKnockback)
            {
                StartKnockback(attack, attackerCombatSystem);
            }
        }
Exemplo n.º 3
0
        private void StartKnockback(Attack attack, CombatSystem attackerCombatSystem)
        {
            if (_knockbackCr != null)
            {
                return;
            }

            _knockbackCr = StartCoroutine(KnockbackCoroutine(attack, attackerCombatSystem));

            OnStartKnockback?.Invoke();
            OnBlockEvent?.Invoke(actionBlocks);
        }
Exemplo n.º 4
0
        private IEnumerator KnockbackCoroutine(Attack attack, CombatSystem attackerCombatSystem)
        {
            float timer = 0.0f;
            float a     = attack.GetData().KnockbackSize /
                          (0.5f * attack.GetData().KnockbackDuration *attack.GetData().KnockbackDuration);

            _rigidbody.velocity = Vector3.zero;
            Vector3 knockbackDirection = Vector3
                                         .ProjectOnPlane((_combatSystem.transform.position - attackerCombatSystem.transform.position),
                                                         new Vector3(0f, 1f, 0f)).normalized;

            while (timer < attack.GetData().KnockbackDuration)
            {
                _rigidbody.velocity = knockbackDirection * (a * timer);

                timer += Time.fixedDeltaTime;

                yield return(new WaitForFixedUpdate());
            }

            _rigidbody.velocity = Vector3.zero;

            StopKnockback();
        }
Exemplo n.º 5
0
 private void Awake() => _combatSystem = GetComponent <CombatSystem>();
Exemplo n.º 6
0
 private void Awake()
 {
     _combatSystem = GetComponent <CombatSystem>();
     _rigidbody    = transform.root.GetComponent <Rigidbody>();
 }