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() { if (_pointer < _path.Count) { _avoid.SetTarget(_path[_pointer].transform); _minionController.Move(_avoid.GetDirection()); _minionController.Look(_path[_pointer].transform.position); Vector3 target = _path[_pointer].transform.position; Vector3 difference = target - _transform.transform.position; var waypointDistace = difference.magnitude; if (waypointDistace <= _minionController.enemyMovement.safeDistanceToWaypoint) // Reached Waypoint { _pointer++; } } // Run A* else { for (int i = 0; i < _minionController.allyMinionsList.Count; i++) { var currentMinion = _minionController.allyMinionsList[i].GetComponent <MinionController>(); if (currentMinion != null) { currentMinion.fsm.Transition(MinionController.States.IDLE); } } _pointer = 0; } // If End of Path, Minions IDLE }
private void CheckDistance() { if (_enemyTransform == null) { return; } currentDistance = (_enemyTransform.position - _minionController.transform.position).magnitude; if (currentDistance > 8) { avoid.SetTarget(_minionController.currentEnemy); _minionController.Move(avoid.GetDirection()); _minionController.Look(_enemyTransform.position); //Debug.Log($"Enemy Transform: {_enemyTransform.position}"); } if (currentDistance <= 10) { AttackEnemy(); } }
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); } }