private void CheckHealth()
    {
        var currentLife = _minionController.lifeController.GetCurrentLife(); // Gets Current Life.

        CheckHealCooldown();                                                 // Check Heal Cooldown
        currentLife = _minionController.lifeController.GetCurrentLife();

        if (currentLife < _minionController._lowHealth) // If Minion is Low Health
        {
            var fleeDirection = _flee.GetDirection() + _minionController.transform.position;
            _avoid.SetTargetByVector(fleeDirection);       // Set flee World Position as Target
            _minionController.Move(_avoid.GetDirection()); // Move to Flee Position
        } // Recover Health & Flee.

        if (currentLife < _minionController._recoverHealth)
        {
            if (_minionController.isBoss)
            {
                _minionController.AlertFlee();

                if (fleeTimer <= 0)
                {
                    _minionController.Kamikaze();
                }
            }
        } // Recover Health & Not Flee.

        if (currentLife >= _minionController._recoverHealth)
        {
            _minionController._speed = _minionController._ogSpeed;
            _fsm.Transition(MinionController.States.IDLE);
        } // Back to Battle.
    }
示例#2
0
    public override void Execute()
    {
        // Get Nearby Allies.
        List <Transform> context = _flockingEntity.GetNearbyEntities();

        // If there is none, idle.
        if (context.Count == 0)
        {
            _fsm.Transition(MinionController.States.IDLE);
        }

        // If there are allies, flock.
        else
        {
            Vector3 flockingDirection  = _flockingEntity.UpdateDirection();
            Vector3 worldPositionFlock = flockingDirection + _minionController.transform.position;
            //_minionController.Move(flockingDirection.normalized);

            _avoid.SetTargetByVector(worldPositionFlock);
            _minionController.Move(_avoid.GetDirection());
            _minionController.Look(worldPositionFlock);
        }
    }