void SpawnEnemy(Vector3 spawn, EnemySpawnSide side = EnemySpawnSide.Right)
    {
        List <Vector3> enemyNav = new List <Vector3> ();
        int            rangeVal = Random.Range(0, 200);

        if (rangeVal % 2 == 0)
        {
            AddTrianglePattern(spawn, enemyNav, spread, side);
        }
        else
        {
            AddSquarePattern(spawn, enemyNav, spread, side);
        }

        Destroy(Instantiate(markerPrefab, enemySpawnPoint, Quaternion.identity), markerLifetime);

        foreach (Vector3 loc in enemyNav)
        {
            Destroy(Instantiate(markerPrefab, loc, Quaternion.identity), markerLifetime);
        }

        GameObject     enemyInstance = Instantiate(enemyPrefab, enemySpawnPoint, Quaternion.identity) as GameObject;
        EnemyNavigator eiNav         = enemyInstance.GetComponent <EnemyNavigator> ();

        eiNav.SetSpeed(enemySpeed);
        eiNav.PopulateDirectionList(enemyNav);
        eiNav.SetMoveDelay(enemyMoveDelay);
    }
Exemple #2
0
 void SetVec()
 {
     vecCnt++;
     if (vecCnt % 2 == 0)
     {
         vec = EnemyNavigator.NavVec(transform.position, -0.7F, -0.5F);
     }
     else
     {
         vec = EnemyNavigator.NavVec(transform.position, 0.5F, 0.7F);
     }
 }
Exemple #3
0
 public void Initialize()
 {
     player    = GameObject.FindGameObjectWithTag("Player");
     playerRb  = player.GetComponent <Rigidbody2D>();
     navigator = GetComponent <EnemyNavigator>();
     rb        = GetComponent <Rigidbody2D>();
     unit      = GetComponent <Unit>();
     unit.Initialize(true, OnDeath, true, OnHit);
     burstAmount  = Random.Range(BurstRange.x, BurstRange.y);
     burstTimeout = Random.Range(BurstTimeoutRange.x, BurstTimeoutRange.x) * .4f;
     bursting     = true;
 }
Exemple #4
0
    private void FixedUpdate()
    {
        float angle = EnemyNavigator.NavAng(transform.position);

        angle += theta;
        vec    = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)) * basicSpeed * speedRate;
        UpdateDirection();
        UpdateTheta();
        if (!ec.stunned)
        {
            body.AddForce(vec);
        }
    }
Exemple #5
0
    void SetVec()
    {
        vecCnt++;
        if (vecCnt % 2 == 0)
        {
            vec = EnemyNavigator.NavVec(transform.position, -0.7F, -0.5F);
        }
        else
        {
            vec = EnemyNavigator.NavVec(transform.position, 0.5F, 0.7F);
        }

        float dist = (transform.position - player.transform.position).magnitude;

        if (dist > 7F)
        {
            vec *= 1F + (dist - 7F) * 0.15F;
        }
    }
Exemple #6
0
    void ResetVec()
    {
        if ((player.transform.position - transform.position).magnitude <= 4F)
        {
            Split();
        }

        speed = basicSpeed * Random.Range(0.5F, 1.5F);

        angle = EnemyNavigator.NavAng(transform.position);
        float randAngle = Random.Range(0.5F, 0.7F);

        if (moveCnt % 2 == 1)
        {
            randAngle = -randAngle;
        }
        moveCnt++;
        angle += randAngle;
    }
Exemple #7
0
    void ResetVec()
    {
        navVec = EnemyNavigator.NavVec(transform.position);
        float randAngle;

        if ((player.transform.position - transform.position).magnitude >= 4F)
        {
            randAngle = Random.Range(0.5F, 0.7F);
        }
        else
        {
            randAngle = Random.Range(0.45F, 0.55F) * Mathf.PI;
        }
        if (moveCnt % 2 == 1)
        {
            randAngle = -randAngle;
        }
        moveCnt++;
        vec = EnemyNavigator.NavVec(transform.position, randAngle) * basicSpeed;
    }
Exemple #8
0
    private void FixedUpdate()
    {
        float dist = (player.transform.position - transform.position).magnitude;

        if (dist >= 4F)
        {
            vec = EnemyNavigator.NavVec(transform.position) * basicSpeed * speedRate;
        }
        else
        {
            vec = Vector2.zero;
        }
        if (Time.time >= lastShootTime + 4F && dist <= 5F)
        {
            StartCoroutine(ShootCoroutine());
        }
        if (!ec.stunned)
        {
            body.AddForce(vec);
        }
        UpdateDirection();
    }
    void SetProperties(HashSet <int> remainingLocations, Wave wave, GameObject enemyObject, EnemyController controller, Unit unit, EnemyNavigator navigator, bool stationary)
    {
        waitTime += RandomFromRange(wave.EnemySpawnWait);
        int remainingIndex   = Random.Range(0, remainingLocations.Count);
        int spawningIndex    = remainingLocations.ToArray()[remainingIndex];
        var spawningLocation = spawningLocations[spawningIndex];

        remainingLocations.Remove(spawningIndex);

        enemyObject.transform.position = spawningLocation.position;
        navigator.StationaryPosition   = spawningLocation.position;
        navigator.Aggressiveness      *= Random.Range(.5f, 2f);
        navigator.Shyness      *= Random.Range(.5f, 2f);
        navigator.Sideness     *= Random.Range(.5f, 2f);
        navigator.Acceleration *= Random.Range(.7f, 1.4f);
        navigator.Speed        *= Random.Range(.7f, 1.4f);

        unit.StartingRateOfFire     = RandomFromRange(wave.RateOfFire);
        unit.StartingHealth         = RandomFromRangeInt(wave.Health);
        unit.StartingPickleVelocity = RandomFromRange(wave.PickleVelocity);
        controller.BurstRange       = new Vector2();
        controller.BurstRange.x     = RandomFromRange(wave.MinBurstSize);
        controller.BurstRange.y     = controller.BurstRange.x + RandomFromRange(wave.BurstRange);
        controller.Initialize();

        enemyObject.SetActive(false);
        var spawnerObject = Instantiate(SpawnerPrefab);

        spawnerObject.transform.position = spawningLocation.position;
        var spawner = spawnerObject.GetComponent <Spawner>();

        spawner.Initialize(enemyObject, waitTime);

        livingEnemies.Add(enemyObject);
    }
 void Start()
 {
     enemyNavigator = new EnemyNavigator();
     enemyNavigator.ActivateBrain();
 }