public override void Update() { enemy.IgnoreNeighbours(); if ((positionOfCaller - (Vector2)enemy.transform.position).sqrMagnitude >= enemy.NeighbourConfig.maxDistance && enemy.AmmoAmt > 0) { enemy.UpdateCurrentState(new ShootState(character)); } else { if (caller) { positionOfCaller = caller.transform.position; } enemy.movementController.Move((positionOfCaller - (Vector2)enemy.transform.position).normalized * enemy.HuntConfig.huntSpeed); if ((positionOfCaller - (Vector2)enemy.transform.position).sqrMagnitude < enemy.NeighbourConfig.minDistance) { enemy.movementController.Move(Vector3.zero); enemy.UpdateCurrentState(new StartAttacking(character)); } return; } if (enemy.AmmoAmt < 1) { for (int i = 0; i < AmmoSpawner.INSTANCE.spawnedBullets.Count; i++) { if (AmmoSpawner.INSTANCE.spawnedBullets[i] != null) { enemy.UpdateCurrentState(new CollectAmmoState(character)); } else { enemy.UpdateCurrentState(new PatrolState(character)); } } } }
public override void ExitState() { enemy.IgnoreNeighbours(); }