コード例 #1
0
        private void CheckAttack(BaseAttack attack)
        {
            if (attack == null)
            {
                return;
            }

            Vector2 attackCenter = attack.AttackCenterPoint;

            attackCenter.x *= _playerController.DirectionX;

            Vector2 direction = (Vector2)_playerController.transform.position + attackCenter;

            Collider2D[] hits = Physics2D.OverlapCircleAll(direction, attack.AttackRadius, _playerData.DamageableMask);

            if (hits.Length > 0)
            {
                foreach (Collider2D enemy in hits)
                {
                    if (enemy.gameObject.TryGetComponent(out IDamageable damageable))
                    {
                        damageable.TakeDamage(attack);
                    }
                }
            }
        }
コード例 #2
0
 public void TakeDamage(BaseAttack attack)
 {
     if (attack.ApplyKnockback)
     {
         Vector2 force = new Vector2(attack.KnockbackForce.x * _player.DirectionX, attack.KnockbackForce.y);
         GetComponent <Rigidbody2D>().AddForce(force, ForceMode2D.Impulse);
     }
 }
コード例 #3
0
        private void CreateAttacks()
        {
            _swordAttack1 = new BaseAttack(_playerData.SwordAttack1.Damage, _playerData.SwordAttack1.AttackRadius, _playerData.SwordAttack1.AttackCenterPoint,
                                           _playerData.SwordAttack1.KnockbackForce, _playerData.SwordAttack1.ApplyKnockback);

            _swordAttack2 = new BaseAttack(_playerData.SwordAttack2.Damage, _playerData.SwordAttack2.AttackRadius, _playerData.SwordAttack2.AttackCenterPoint,
                                           _playerData.SwordAttack2.KnockbackForce, _playerData.SwordAttack2.ApplyKnockback);

            _swordAttack3 = new BaseAttack(_playerData.SwordAttack3.Damage, _playerData.SwordAttack3.AttackRadius, _playerData.SwordAttack3.AttackCenterPoint,
                                           _playerData.SwordAttack3.KnockbackForce, _playerData.SwordAttack3.ApplyKnockback);
        }
コード例 #4
0
        public void SwordAttack(int attackId)
        {
            BaseAttack attack = GetSwordAttackById(attackId);

            CheckAttack(attack);
        }