Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
        void Start()
        {
            audioManager = AudioManager.instance;
            Assert.IsNotNull(audioManager);

            _nextMove = Time.time;

            _accelPower = Random.Range(initialSpeedMin, initialSpeedMax);
            _accel      = deceleration;

            isSoundPlaying = false;

            enemyState = _enemyState.DECELERATING;
        }
Beispiel #4
0
 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
     }
 }
Beispiel #5
0
        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
            {
            }
        }
Beispiel #6
0
 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 { }
        }
Beispiel #8
0
        IEnumerator WaitToDetect()
        {
            yield return(new WaitForSeconds(timeTillDetectMode));

            enemyState = _enemyState.DETECTING;
        }
Beispiel #9
0
        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;
            }
        }