Exemple #1
0
    //To shoot a pattern, we use trigonometry and a for loop to make bullets shoot
    //at different ways based on the number of bullets in the volley.
    private void Shoot(BulletPatterns pattern)
    {
        GameObject  bulletToShoot;
        Rigidbody2D bulletToShootRB;
        Vector2     directionFire;
        float       stepAngle = (pattern.angleOne - pattern.angleTwo) / pattern.numShots;
        float       dirAngle  = pattern.angleOne;
        float       fireX;
        float       fireY;

        for (int x = 0; x < pattern.numShots; x++)
        {
            //Grab bullet, set it at the FP.
            bulletToShoot   = EnemyBulletPool.Instance.GetFromPool();
            bulletToShootRB = bulletToShoot.GetComponent <Rigidbody2D>();
            bulletToShoot.transform.position = FPM.position;

            //Get direction to shoot at.
            fireX         = Mathf.Cos((dirAngle * Mathf.PI) / 180f);
            fireY         = Mathf.Sin((dirAngle * Mathf.PI) / 180f);
            directionFire = new Vector2(fireX, fireY);
            bulletToShootRB.AddForce((directionFire * bulletPower), ForceMode2D.Impulse);

            dirAngle += stepAngle;
        }
    }
Exemple #2
0
    //If the pattern is a burst fire, it will shoot the same pattern a number of times
    //Before shooting the next volley.
    private IEnumerator BurstFire(BulletPatterns pattern)
    {
        int x = 0;

        while (x < pattern.burstAmount)
        {
            Shoot(pattern);
            yield return(new WaitForSeconds(pattern.burstFireDelay));

            x++;
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (isActivated)
        {
            transform.Translate(new Vector3(xDir, yDir) * movementSpeed * Time.deltaTime);

            if (transform.position.x < -10 || transform.position.x > 10 || transform.position.y < -10 || transform.position.y > 10)
            {
                Destroy(gameObject);
            }

            if (Random.Range(0, 200) == 1 /*splitTimer >= 1.2f*/)
            {
                if (boolet.name.Equals("Bullet"))
                {
                    //isActivated = false;
                    BulletPatterns.spawnBullet(xDir, yDir, boolet, transform.position);
                    BulletPatterns.spawnBullet(-1 * xDir, yDir, boolet, transform.position);
                    BulletPatterns.spawnBullet(-1 * xDir, -1 * yDir, boolet, transform.position);
                    BulletPatterns.spawnBullet(xDir, -1 * yDir, boolet, transform.position);
                    //Destroy(boolet);
                    Destroy(gameObject);
                }
                else
                {
                    BulletPatterns.spawnSplitterBullet(xDir, yDir, boolet, transform.position);
                    BulletPatterns.spawnSplitterBullet(-1 * xDir, yDir, boolet, transform.position);
                    BulletPatterns.spawnSplitterBullet(-1 * xDir, -1 * yDir, boolet, transform.position);
                    BulletPatterns.spawnSplitterBullet(xDir, -1 * yDir, boolet, transform.position);
                    Destroy(gameObject);
                }
            }

            //if(Random.Range(0, 2) == 1)
            //splitTimer += (Time.deltaTime /* *Random.Range(5, 20)*/);
        }
    }
	void Update(){

		laserTimer += Time.deltaTime;

        MIDI = input.FrequencyToMIDI(input.Analyze());

        //if(!canFire && MIDI != previousMIDI && analysisWait > 0.33f) {

          //  canFire = true;

        //}
        healthBar.transform.localScale = new Vector3(1f, (1f / maxHealth) * currentHealth, 1f);

        if (canFire){

				if (Input.GetKey (KeyCode.E))
					BulletPatterns.SplitterPattern1 ();

			int temp = MIDI % 12;
            previousMIDI = MIDI;
		

			switch (temp) {
			case 0:
				label.text = "" + MIDI + ": C";
					BulletPatterns.TargetedPattern3 ();
					effectiveWait = min + 0.6f;
					canFire = false;
				break;
			case 1:
				label.text = "" + MIDI + ": Db/C#";
				BulletPatterns.SplitterPattern1();
					effectiveWait = min + 1.2f;
					canFire = false;
				break;
			case 2:
				label.text = "" + MIDI + ": D";
					BulletPatterns.SerpentinePattern1();
					effectiveWait = min + 1.2f;
					canFire = false;
				break;
			case 3:
				label.text = "" + MIDI + ": Eb/D#";
					BulletPatterns.CirclePattern1 ();
					effectiveWait = min + 0.6f;
					canFire = false;
				break;
			case 4:
				label.text = "" + MIDI + ": E";
				BulletPatterns.CirclePattern1 ();
					effectiveWait = min + 0.6f;
					canFire = false;

				break;
			case 5:
				label.text = "" + MIDI + ": F";
					BulletPatterns.SerpentinePattern2 ();
					effectiveWait = min + 0.6f;
					canFire = false;
				break;
			case 6:
				label.text = "" + MIDI + ": Gb/F#";
					BulletPatterns.CirclePattern2 ();
					effectiveWait = min + 0.6f;
					canFire = false;
				break;
			case 7:
				label.text = "" + MIDI + ": G";
				if(!charging && !firing && laserTimer > 10f)
					ChargeLaser ();
				BulletPatterns.CirclePattern2 ();
				effectiveWait = min + 0.6f;
				canFire = false;
				break;
			case 8:
				label.text = "" + MIDI + ": Ab/G#";
					BulletPatterns.TargetedPattern1 ();
					effectiveWait = min + 0.3f;
					canFire = false;
				break;
			case 9:
				label.text = "" + MIDI + ": A";
				BulletPatterns.PulsingBulletPattern2 ();
					effectiveWait = min + 0.6f;
					canFire = false;
				break;
			case 10:
				label.text = "" + MIDI + ": Bb/A#";
					BulletPatterns.PulsingBulletPattern1 ();
					effectiveWait = min + 0.3f;
					canFire = false;
				break;
			case 11:
				label.text = "" + MIDI + ": B";
				BulletPatterns.TargetedPattern2 ();
					effectiveWait = min + 0.3f;
					canFire = false;
				break;

			default:
				label.text = "Unrecognized";
				break;

			}
		}
		else{

			analysisWait += Time.deltaTime;

			if(analysisWait >= effectiveWait){

				analysisWait = 0;
				canFire = true;

			}

		}

		if(charging){

			timerChar += Time.deltaTime;
			if(timerChar > timerMax){

				FireLaser();

			}


		}
		else if(firing){

			if(posDir){

				transform.Translate(Vector3.right * speed);
				charger.transform.Translate(Vector3.right * speed);
				laser.transform.Translate(Vector3.right * speed);
				if(transform.position.x > consMax){

					posDir = false;
					calc++;

				}

			}
			else{

				transform.Translate(Vector3.left * speed);
				charger.transform.Translate(Vector3.left * speed);
				laser.transform.Translate(Vector3.left * speed);
				if(transform.position.x < consMin){

					posDir = true;
					calc++;

				}

			}

			if(calc >= 2 && transform.position.x > -0.1){

				EndLaser();

			}

		}


	}