コード例 #1
0
ファイル: Knife.cs プロジェクト: JohnTen/Mind-over-Blade-Demo
    public bool Withdraw()
    {
        if (state == KnifeState.InSheath || actionTimer > 0 || returning)
        {
            return(false);
        }

        returning   = true;
        actionTimer = actionDelay;

        transform.parent = null;
        state            = KnifeState.Flying;

        if (hittedEnemy != null)
        {
            var dir = (sheath.transform.position - transform.position).normalized;
            hittedEnemy.Hit(dir, 0.8f);
            hittedEnemy.AddForce(dir * dragForce);
        }

        basicAttack = AttackPackage.CreateNewPackage();
        hittedEnemy = null;
        Returning();

        return(true);
    }
コード例 #2
0
ファイル: Knife.cs プロジェクト: JohnTen/Mind-over-Blade-Demo
    public bool Launch(Vector3 direction, bool isPiercing = false)
    {
        if (state != KnifeState.InSheath)
        {
            return(false);
        }

        piercing    = isPiercing;
        actionTimer = actionDelay;
        state       = KnifeState.Flying;

        transform.position = sheath.LaunchPosition.position;
        transform.right    = direction;

        basicAttack = AttackPackage.CreateNewPackage();

        return(true);
    }
コード例 #3
0
ファイル: Knife.cs プロジェクト: JohnTen/Mind-over-Blade-Demo
    public bool Hover()
    {
        if (hovered ||
            returning ||
            state != KnifeState.Flying ||
            actionTimer > 0)
        {
            return(false);
        }

        piercing    = false;
        hovered     = true;
        actionTimer = actionDelay;
        state       = KnifeState.Hover;

        basicAttack = AttackPackage.CreateNewPackage();

        return(true);
    }
コード例 #4
0
    public void Activate()
    {
        AttackPackage attack = AttackPackage.CreateNewPackage();

        weapon.Activate(attack);
    }
コード例 #5
0
        private void HandleFrameEvent(FrameEventEventArg eventArgs)
        {
            if (eventArgs._name == AnimEventNames.AttackBegin)
            {
                var attack = AttackPackage.CreateNewPackage();
                attack._hitPointDamage.Base  = _state._hitPointDamage;
                attack._enduranceDamage.Base = _state._enduranceDamage;

                _weapon.Activate(attack, _currentMove);

                if (eventArgs._animation.name == BossFSMData.Anim.Slash1 ||
                    eventArgs._animation.name == BossFSMData.Anim.Slash2)
                {
                    foreach (var collider in _slashAttackBoxes)
                    {
                        collider.enabled = true;
                    }
                    _collider.gameObject.layer = LayerMask.NameToLayer("EnemyDash");
                    OnBeginDashingInvincible?.Invoke();
                }

                if (eventArgs._animation.name == BossFSMData.Anim.Combo2_3)
                {
                    foreach (var collider in _combo2AttackBoxes)
                    {
                        collider.enabled = true;
                    }
                    _collider.gameObject.layer = LayerMask.NameToLayer("EnemyDash");
                    OnBeginDashingInvincible?.Invoke();
                }

                if (eventArgs._animation.name == BossFSMData.Anim.Combo3_2)
                {
                    foreach (var collider in _thrustAttackBoxes)
                    {
                        collider.enabled = true;
                    }
                    _collider.gameObject.layer = LayerMask.NameToLayer("EnemyDash");
                    OnBeginDashingInvincible?.Invoke();
                }
            }
            else if (eventArgs._name == AnimEventNames.AttackEnd)
            {
                _weapon.Deactivate();

                if (eventArgs._animation.name == BossFSMData.Anim.Slash1 ||
                    eventArgs._animation.name == BossFSMData.Anim.Slash2)
                {
                    foreach (var collider in _slashAttackBoxes)
                    {
                        collider.enabled = false;
                    }
                    _collider.gameObject.layer = LayerMask.NameToLayer("RejectCollider");
                    OnStopDashingInvincible?.Invoke();
                }

                if (eventArgs._animation.name == BossFSMData.Anim.Combo2_3)
                {
                    foreach (var collider in _combo2AttackBoxes)
                    {
                        collider.enabled = false;
                    }
                    _collider.gameObject.layer = LayerMask.NameToLayer("RejectCollider");
                    OnStopDashingInvincible?.Invoke();
                }

                if (eventArgs._animation.name == BossFSMData.Anim.Combo3_2)
                {
                    foreach (var collider in _thrustAttackBoxes)
                    {
                        collider.enabled = false;
                    }
                    _collider.gameObject.layer = LayerMask.NameToLayer("RejectCollider");
                    OnStopDashingInvincible?.Invoke();
                }
            }
        }