void SpeedBoostOn(Powerup powerup) { // Player cannot stack speed boosts if (Powerup.GetSpeedBoost() != true) { Powerup.SetSpeedBoost(true); globalTime = Time.time; speed *= 2; fireRate /= 2; AudioSource.PlayClipAtPoint(speedBoostOn, transform.position); } powerup.Collected(); }
void Update() { // Restrict player to game space float newx = Mathf.Clamp(transform.position.x, xmin, xmax); transform.position = new Vector3(newx, transform.position.y, transform.position.z); // Move left and right if (Input.GetKey(KeyCode.LeftArrow)) { transform.position += Vector3.left * speed * Time.deltaTime; } else if (Input.GetKey(KeyCode.RightArrow)) { transform.position += Vector3.right * speed * Time.deltaTime; } // If space is held down, fire lasers at a set rate // "Fire" refers to the method above via string if (Input.GetKeyDown(KeyCode.Space)) { InvokeRepeating("Fire", 0.000001f, fireRate); } // If space is released, cease firing lasers if (Input.GetKeyUp(KeyCode.Space)) { CancelInvoke("Fire"); } // If speed boost expired, set speed and fire rate back to normal if (Powerup.GetSpeedBoost() && Time.time - globalTime >= 20f) { SpeedBoostOff(); } // Set position of shield to be the same as the player if (Powerup.GetShield()) { shieldImage.transform.position = transform.position; } }