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));
                }
            }
        }
    }
Ejemplo n.º 2
0
 public override void ExitState()
 {
     enemy.IgnoreNeighbours();
 }