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