Пример #1
0
    private void CheckStatus()
    {
        // first, check active state
        if (!_isActive)
        {
            if (activationDetect.PlayerInRange())
            {
                _isActive = true;
            }
        }

        if (currentKnockbackCooldown > 0)
        {
            _hitStunned = true;
            currentKnockbackCooldown -= Time.deltaTime;
        }
        else
        {
            _hitStunned = false;
        }

        if (_currentState == null)
        {
            CheckStates();
        }
    }
    public bool isActive()
    {
        bool active = true;

        // do checks for all conditions
        if (myEnemy.isActive != activeState)
        {
            active = false;
        }

        if (minDistance != null)
        {
            if (!minDistance.PlayerInRange())
            {
                active = false;
            }
        }

        if (minHealthPercentage > 0 && myEnemy.currentHealth / myEnemy.maxHealth * 100f <= minHealthPercentage)
        {
            active = false;
        }

        // after all checks, if active = true && immediate == true, force mode switch
        if (active && overrideImmediate)
        {
            myEnemy.ForceBehaviorState(this);
        }

        return(active);
    }
    private bool AttackInRange()
    {
        bool canContinue = true;

        if (rangeCheck != null)
        {
            if (!rangeCheck.PlayerInRange())
            {
                canContinue = false;
            }
        }

        return(canContinue);
    }
    // Update is called once per frame
    void FixedUpdate()
    {
        if (behaviorActing)
        {
            DoMovement();

            chaseTimeCountdown -= Time.deltaTime;

            if (chaseEndRange != null)
            {
                if (chaseEndRange.PlayerInRange())
                {
                    EndAction();
                }
            }

            if (chaseTimeCountdown <= 0)
            {
                EndAction();
            }
        }
    }