void FixedUpdate() { //move enemy in x direction switch (enemyState) { case (_enemyState.SPAWNING): //move enemy in y direction rb2d.MovePosition(new Vector2(transform.position.x, moveSpeed.y + transform.position.y)); break; case (_enemyState.DETECTING): //move enemy in y direction rb2d.MovePosition(new Vector2(transform.position.x, moveSpeed.y + transform.position.y)); //detect player in range of y variable, add radius of enemy if (player != null) { if (player.transform.position.y < transform.position.y + cc2d.radius && player.transform.position.y > transform.position.y - cc2d.radius) { //if player is in front of enemy, make move speed negative if (player.transform.position.x > transform.position.x) { moveSpeed.x = -moveSpeed.x; } //player is inside y range, move enemy state to DETECTED enemyState = _enemyState.DETECTED; } } break; case (_enemyState.DETECTED): //move enemy in x direction rb2d.MovePosition(new Vector2(moveSpeed.x + transform.position.x, transform.position.y)); break; } }
void FixedUpdate() { //add accel/decel movement to enemy _accelPower += _accel * Time.deltaTime; if (moveInYDirection) { transform.position += new Vector3(0, _accelPower, 0); } else { transform.position += new Vector3(_accelPower, 0, 0); } transform.eulerAngles += new Vector3(0, 0, rotateSpeed); //state machine switch (enemyState) { case (_enemyState.DECELERATING): //change phase if (_accelPower <= 0) { _accel = 0; _accelPower = 0; enemyState = _enemyState.STOPPED; _nextMove = Time.time; } break; case (_enemyState.STOPPED): //'explode' enemy if (Time.time >= _nextMove + fuseTime) { transform.localScale += new Vector3(scaleAccel, scaleAccel, 0); rotateSpeed += rotateAccel; if (!isSoundPlaying) { isSoundPlaying = true; audioManager.PlaySound(bombSoundName); } } //destroy enemy if (Time.time >= _nextMove + fuseTime + destroyTime) { Destroy(this.gameObject); } break; } }
void Start() { audioManager = AudioManager.instance; Assert.IsNotNull(audioManager); _nextMove = Time.time; _accelPower = Random.Range(initialSpeedMin, initialSpeedMax); _accel = deceleration; isSoundPlaying = false; enemyState = _enemyState.DECELERATING; }
void Start() { rb2d = gameObject.GetComponent <Rigidbody2D>(); enemyState = _enemyState.SPAWNING; nextPhaseTime = Time.time; try { player = GameObject.Find("Player").gameObject; playerPosition = new Vector2(player.transform.position.x, player.transform.position.y); } catch { //player is dead, do nothing } }
void Start() { audioManager = AudioManager.instance; Assert.IsNotNull(audioManager); _nextShoot = Time.time; _nextMove = Time.time; enemyState = _enemyState.DECELERATING; _accelPower = initialSpeed; _accel = deceleration; try { player = GameObject.Find("Player").gameObject; } catch { } }
void Start() { //initializing rb2d = GetComponent <Rigidbody2D>(); cc2d = GetComponent <CircleCollider2D>(); audioManager = AudioManager.instance; Assert.IsNotNull(audioManager); //loop stuff //LM = GameObject.Find("LoopManager").gameObject; //_loop = 1; //if (LM.GetComponent<LoopManager>().loop <= maxLoop) //{ // _loop = LM.GetComponent<LoopManager>().loop; //} //else //{ // _loop = maxLoop; //} //GetComponent<EnemyScore>().score *= _loop; //if player is alive, find player gameobject try { player = GameObject.Find("Player").gameObject; //for bullets if (willShoot) { StartCoroutine(SpawnBullets()); } } catch { //player iz ded, do nothing } enemyState = _enemyState.SPAWNING; StartCoroutine(WaitToDetect()); }
void FixedUpdate() { //find player in case player is dead try { if (player == null) { player = GameObject.Find("Player").gameObject; } playerPosition = new Vector2(player.transform.position.x, player.transform.position.y); } catch { //player is dead, do nothing } //add camera movement to miniboss transform.position += new Vector3(Camera.main.GetComponent <CameraMovement>().moveSpeed.x, Camera.main.GetComponent <CameraMovement>().moveSpeed.y, 0); try { switch (enemyState) { case (_enemyState.SPAWNING): //enemy moves in from right into screen then stops transform.position += new Vector3(spawnSpeed.x, spawnSpeed.y, 0); if (Time.time > nextPhaseTime + spawnTime) { nextPhaseTime = Time.time; timeToDespawn = Time.time; enemyState = _enemyState.ALIVE1; } break; case (_enemyState.ALIVE1): //enemy shoots a few ricochet bullets at player a few times before going to alive2 //movement if (Time.time > nextMove1 + moveTime1) { nextMove1 = Time.time; if (playerPosition.y < gameObject.transform.position.y) { //move down if player is down rb2d.AddForce(-moveSpeed1); } else if (playerPosition.y >= gameObject.transform.position.y) { //move up if player is up rb2d.AddForce(moveSpeed1); } } //shooting if (Time.time > nextShoot1 + shootDuration1) { nextShoot1 = Time.time; try { //find vector from enemy to player Vector3 distToPlayer = new Vector3(playerPosition.x, playerPosition.y, transform.position.z) - ricochetShooter.transform.position; //spawn point of bullet Vector3 startPoint = new Vector3(ricochetShooter.transform.position.x + offsetRicochet.x, ricochetShooter.transform.position.y + offsetRicochet.y, transform.position.z); //shoot bullets ShootInDirection.ShootEqualSpread(ricochetBullet, numberOfRicochetBullets, degreeDeviation, startPoint, distToPlayer.normalized, ricochetBullet.GetComponent <RicochetBulletMovement>().speed); //play sound audioManager.PlaySound(ricochetSoundName); } catch { //player is dead, do nothing } } //attack phase change if (Time.time > nextPhaseTime + phase1Time) { nextPhaseTime = Time.time; enemyState = _enemyState.ALIVE2; } //despawn if (Time.time > timeToDespawn + despawnTime) { enemyState = _enemyState.DESPAWN; } break; case (_enemyState.ALIVE2): //enemy shoots bullets at player a few times before going back to alive1 //shooting if (Time.time > nextShoot2 + shootDuration2) { nextShoot2 = Time.time; try { for (int i = 0; i < normalShooter.Length; i++) { //find vector from enemy to player Vector3 distToPlayer = new Vector3(playerPosition.x, playerPosition.y, transform.position.z) - normalShooter[i].transform.position; //spawn point of bullet Vector3 startPoint = new Vector3(normalShooter[i].transform.position.x + offsetNormal.x, normalShooter[i].transform.position.y + offsetNormal.y, transform.position.z); //instantiate bullet GameObject bullet = (GameObject)Instantiate(normalBullet, startPoint, Quaternion.identity); //set velocity of bullet using unit vector of distance from enemy to player bullet.GetComponent <Rigidbody2D>().velocity = distToPlayer.normalized * normalBulletSpeed; //play sound audioManager.PlaySound(bulletSoundName); } } catch { //player is dead, do nothing } } //attack phase change if (Time.time > nextPhaseTime + phase2Time) { nextPhaseTime = Time.time; enemyState = _enemyState.ALIVE1; } //despawn if (Time.time > timeToDespawn + despawnTime) { enemyState = _enemyState.DESPAWN; } break; case (_enemyState.DESPAWN): //if time elapsed is more than despawn time, enter god mode and move right and get destroyed by out of camera trigger transform.position += new Vector3(despawnSpeed.x, despawnSpeed.y, 0); break; case (_enemyState.DEAD): //probably nothing break; } } catch { } }
IEnumerator WaitToDetect() { yield return(new WaitForSeconds(timeTillDetectMode)); enemyState = _enemyState.DETECTING; }
void FixedUpdate() { //get player position try { player = GameObject.Find("Player").gameObject; } catch { } //add accel/decel movement to enemy _accelPower += _accel * Time.deltaTime; transform.position += new Vector3(0, -_accelPower, 0); //state machine switch (enemyState) { case _enemyState.DECELERATING: //change phase if (_accelPower <= 0) { _accel = 0; enemyState = _enemyState.STOPPED; _nextShoot = Time.time - shootInterval; _nextMove = Time.time; } break; case _enemyState.STOPPED: //shoot laser if (Time.time >= _nextShoot + shootInterval) { _nextShoot = Time.time; try { player = GameObject.Find("Player").gameObject; } catch { } try { //find vector from enemy to player Vector3 distToPlayer = player.transform.position - transform.position; //shoot ShootInDirection.Shoot(LaserStarGO, 1, 0, transform.position, distToPlayer, LaserStarGO.GetComponent <LaserSpinMovement>().moveSpeed, true); //play sound audioManager.PlaySound(laserSoundName); } catch { } } //change phase if (Time.time >= _nextMove + timeBeforeMove) { enemyState = _enemyState.ACCELERATING; } break; case _enemyState.ACCELERATING: _accel = acceleration; break; } }