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. }
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); } }